Ответ 1
То, как это работает. Если вам нужно изменить значение, чтобы вызвать событие "change", вы можете явно сделать это:
$('input#whatever').val('hi').change();
У меня на моей странице есть следующий код 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:
Событие изменения происходит, когда элемент управления теряет фокус ввода, и его значение было изменено с момента получения фокуса.
Это означает, что событие изменения предназначено для запуска изменений при взаимодействии с пользователем. Программные изменения не приводят к запуску этого события.