2015-10-22 2 views
1

У меня есть этот почтовый ящик или письма, которые мне нужно отметить, используя флажок для нескольких удалений. Проблема в том, что когда я нажимаю флажок, он всегда переходит к методу read() из-за onclick внутри тега. Все, что я хочу, это простая маркировка. См. Код ниже:Отметить строку для удаления с помощью флажка

@foreach ($messages as $message)  
    <tr onclick="document.location='{{route('account.message.read', array($message->id))}}'"> 
    <td> <input type="checkbox" name="msg" value="{{$message->id}}"></td> 
    <td><strong>{{Str::words($message->subject, 5, '...')}}</strong> {{Str::words($message->message, 20, '...')}}</td> 
    </tr> 
@endforeach 

Теперь, как я могу пометить каждую строку, не входя в этот метод? Я новичок.

+0

Если вы хотите выбрать несколько элементов, то удалить, что 'onclick' параметр из' checkbox' тега. Для нескольких удалений создайте еще одну кнопку и добавьте измененный параметр 'onclick', который удаляет все отмеченные элементы. – CrakC

+0

@CrakC по коду, который я опубликовал, не существует параметра onclick внутри флажка. Мне не жаль. Я хочу отметить каждую строку и сразу удалить всю отмеченную строку. – KristCont

+0

Итак, я понял, что это неправильно. Тем не менее, вы включили параметр 'onclick' для ограничивающего тега' tr', что означает, что любой элемент внутри него запускает событие 'onclick' при нажатии. Попробуйте обходной путь, добавив параметр 'onclick' в' div' или 'span' или' p', который находится рядом с 'checkbox' и содержит, скажем, тему письма. – CrakC

ответ

3

Все, что вам нужно, это приложить обработчик checkbox и использовать stopPropagation из бурлит в деревья, смотри ниже пример:

HTML

Предположил есть строки таблицы с onclick инлайн яваскрипт и внутри него есть input:

<table> 
    <tr onclick="return alert('Hai')"> 
    <td> 
     <input type="checkbox" />Click Me 
    </td> 
    </tr> 
<table> 

А вот обработчик:

$('input').click(function(e){ 
    // normally if we removed this line of code 
    // alert will getting called as checkbox is checked/unchecked 
    // was inside table rows 
    // but with this propagation, we disabled it 
    // from bubbling up into tree 
    e.stopPropagation(); 
}); 

DEMO

+0

спасибо, что это решение работает хорошо. Именно то, что я ищу. – KristCont

+0

Рад это услышать, и вы приветствуете помощника –

1

можно поставить OnClick внутри тегов, исключая CheckBox ячейки

иначе вы могли бы назвать фактическую OnClick функцию во время записи события щелчка и убедитесь, что х больше, чем позволяет сказать 50px!

<script type="text/javascript"> 
 
document.getElementById('emailRow1').addEventListener("click",function(e){ 
 
\t var x=e.pageX-this.offsetLeft; 
 
\t if(x>50){ 
 
\t \t rowClicked(); 
 
\t } 
 
\t },true); 
 
</script>
<table><tbody><tr id='emailRow1'><td style="width:50px;">This area wont trigger onclick</td><td>I trigger onclick</td><td>i trigger onclick</td>

Затем вы можете установить пользовательские параметры вашего объекта и вызывать их с помощью this.customPropertyName, чтобы определить, какая строка была нажата! надеюсь, что это помогает

+0

Спасибо. это будет работать, но я буду продолжать повторять, чтобы поместить onclick в каждый .. У меня есть больше , чтобы надеть эту строку, как тему и отправителя сообщения. – KristCont

+0

Я отредактировал свой ответ. Я думаю, что приведенный выше код помог бы повысить масштабируемость вашей страницы, реализовав свойства cutom в html или JScript и установив onclicks через javascript, а не как HREF, но в качестве общего ответа на заданный вопрос @Norilihazmey имеет самый простой ответ на ваш вопрос – PC3TJ

+0

спасибо. ваш ответ может работать, и это хорошо. Я согласен с вами в том, что у Norilihazmey есть простое решение. – KristCont

Смежные вопросы