Событие размытия запускается автоматически при условном присвоении значения

Я вызываю функцию по событию размытия ‹textarea>.

HTML: (шаблон лезвия Laravel)

<textarea class="form-control" required>{{ isset($assessment_params[$parameter->id]) ? $assessment_params[$parameter->id] : NULL }}</textarea>

Javascript:

$( document ).ready(function() {
    $(document).on('blur', 'textarea', function() {
        alert('Blur event triggered');
    });
});

Проблема:

Событие размытия для этого ‹textarea> срабатывает, как только я захожу на страницу. Он должен срабатывать только тогда, когда я теряю фокус из этого текстового поля (например, стандартное событие размытия).

Я понимаю, что эта проблема возникает, когда я условно назначаю значение для этого ‹textarea>.



person Parth Vora    schedule 19.01.2017    source источник


Ответы (2)


Попробуй это:

$( document ).ready(function() {
    $('textarea').on('blur', function(){
        alert('Blur event triggered');
    });
});

Рабочий скрипт

person Mayank Pandeyz    schedule 19.01.2017
comment
Большое спасибо. да, это помогло. Однако не могли бы вы объяснить, что было не так в коде JS? Почему on () в документе не работает должным образом? - person Parth Vora; 19.01.2017
comment
Объяснение: on () используется для динамической привязки событий к слушателям. Здесь нет необходимости сначала использовать on (). во-вторых, если используется on (), то никогда не использовал его с помощью документа, поскольку он будет прослушивать каждое событие, запущенное в документе. В вашем случае он прослушивает каждое размытие (), выполненное в документе. Наслаждайтесь кодированием :) - person Mayank Pandeyz; 19.01.2017
comment
Имеет смысл. Спасибо за объяснение. - person Parth Vora; 19.01.2017

Попробуйте это, он свяжет событие размытия с классом, содержащим 'form_control'

$( document ).ready(function() {
  $('.form-control').bind('blur', function() {
    alert('Blur event triggered');
 });
});
person Abi    schedule 19.01.2017