我的页面上有以下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" />
使用代码更改文本框的值时,更改不会触发。如果我在文本框中输入,则更改将触发。我错过了什么?
答案 0 :(得分:73)
这就是它的工作方式。如果您需要更改值以触发“更改”事件,则可以通过以下方式明确执行此操作:
$('input#whatever').val('hi').change();
答案 1 :(得分:4)
$('.change').change()
会触发此事件。只是更改属性不会触发事件。
答案 2 :(得分:2)
根据DOM Level 2 Event Specification:
当控件失去输入焦点并且自获得焦点后其值已被修改时,会发生更改事件。
这意味着更改事件旨在通过用户交互触发更改。程序化更改不会导致触发此事件。