Событие изменения ввода текста JavaScript не срабатывает - PullRequest
2 голосов
/ 14 января 2011

У меня есть поле ввода типа текста и флажок. Если я изменю текст, а затем щелкните за пределами поля ввода (или нажмите клавишу ввода или вкладку), событие изменения будет выброшено. Но если я введу какой-то текст, а затем щелкну мышью непосредственно по флажку, похоже, будет выдано только событие изменения флажка.

У меня есть следующий код:

<input type="text" name="text" class="update">
<input type="checkbox" name="check" class="update">

и этот JQuery:

$('.update').change(function(){
    console.log($(this));
});

Является ли это известной проблемой, и как я могу убедиться, что все изменения происходят в этой настройке? / 1009 *

Ответы [ 4 ]

1 голос
/ 20 июня 2011

Я не уверен, что понял.Но для меня, когда я пытаюсь ввести текстовое поле, а затем установить флажок мышью, оба события запускаются.Но вы должны иметь в виду, что событие «изменение» для ввода текста означает, что этот ввод должен потерять фокус, пока поле сфокусировано, событие изменения не будет инициировано.Это как-то может быть вашим делом.Флажки / радиобоксы работают иначе.Не нужно терять фокус.

Приветствия.

PS Мой тестовый пример: http://dl.dropbox.com/u/196245/index16.html

1 голос
/ 30 мая 2013

Событие изменения не сработает, если фокус ввода не переключен на другие элементы управления

1 голос
/ 14 января 2011

Событие изменения запускается для обоих, потому что вы слушаете класс обновления.

0 голосов
/ 08 мая 2017

Чтобы запустить пользователь изменения, используйте событие ввода:

$('input').on('input',function(){...})

Чтобы запустить код изменений, используйте событие DOMSubtreeModified:

$('input').bind('DOMSubtreeModified',function(){...})

Если вы хотите запустить и изменения пользователя и кода:

$('input').bind('input DOMSubtreeModified',function(){...})

Событие DOMSubtreeModified помечено как устаревшее и иногда довольно трудоемкое, но может также быть очень эффективным при осторожном использовании ...

...