web-dev-qa-db-ja.com

jQuery textbox.val( 'xxxx')は変更を発生させませんか?

私のページには次のjQueryコードがあります。

var isChanged = false;
$(document).ready(function()
{
    $('.change').change(function() {
        isChanged = true;
    });
});

リンク先のテキストボックスの値を変更するプラグインを使用しています。

target.val('xxxx');

(asp.netからの)htmlのテキストボックスは次のとおりです。

<input name="ctl00$cphHolder1$rptFlex$ctl01$txtLeftRank"
  type="text"
  value="52°"
  id="ctl00_cphHolder1_rptFlex_ctl01_txtLeftRank"
  class="change atiselector" />

テキストボックスの値がコードを使用して変更された場合、変更は実行されません。テキストボックスに入力すると、変更が発生します。何が足りないのですか?

45
DC.

それが機能する方法です。 「変更」イベントをトリガーするために値の変更が必要な場合は、次の方法で明示的に行うことができます。

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

$('.change').change()はイベントを発生させます。属性を変更するだけでは、イベントは発生しません。

4

DOMレベル2イベント仕様 によると:

変更イベントは、コントロールが入力フォーカスを失い、フォーカスを取得してからその値が変更された場合に発生します。

つまり、変更イベントは、ユーザーの操作による変更時に発生するように設計されています。プログラムの変更によって、このイベントが発生することはありません。

3
oak