jQuery textbox.val('xxxx')没有导致更改为fire?

时间:2010-02-11 20:12:02

标签: jquery textbox onchange

我的页面上有以下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" />

使用代码更改文本框的值时,更改不会触发。如果我在文本框中输入,则更改将触发。我错过了什么?

3 个答案:

答案 0 :(得分:73)

这就是它的工作方式。如果您需要更改值以触发“更改”事件,则可以通过以下方式明确执行此操作:

$('input#whatever').val('hi').change();

答案 1 :(得分:4)

$('.change').change()会触发此事件。只是更改属性不会触发事件。

答案 2 :(得分:2)

根据DOM Level 2 Event Specification

  

当控件失去输入焦点并且自获得焦点后其值已被修改时,会发生更改事件。

这意味着更改事件旨在通过用户交互触发更改。程序化更改不会导致触发此事件。