Текстовое поле jQuery.val('xxxx') не вызывает срабатывания изменений?
Вопрос
У меня есть следующий код jQuery на моей странице:
var isChanged = false;
$(document).ready(function()
{
$('.change').change(function() {
isChanged = true;
});
});
Я использую плагин, который изменяет значение текстового поля, с которым он связан, используя:
target.val('xxxx');
текстовое поле в html (из asp.net) является:
<input name="ctl00$cphHolder1$rptFlex$ctl01$txtLeftRank"
type="text"
value="52°"
id="ctl00_cphHolder1_rptFlex_ctl01_txtLeftRank"
class="change atiselector" />
Когда значение текстового поля изменяется с помощью кода, изменение не выполняется.Если я введу текстовое поле, произойдет изменение.Что я упускаю из виду?
Решение
Вот как это работает.Если вам нужно изменение значения для запуска события "change", вы можете явно сделать это с помощью:
$('input#whatever').val('hi').change();
Другие советы
$('.change').change()
запустит событие.Простое изменение атрибутов не запускает событие.
Согласно Спецификация события уровня DOM 2:
Событие изменения происходит, когда элемент управления теряет фокус ввода и его значение было изменено с момента получения фокуса.
Это означает, что событие изменения предназначено для срабатывания при изменении в результате взаимодействия с пользователем.Программные изменения не приводят к запуску этого события.