47

ページに次の 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" />

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

4

4 に答える 4

78

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

$('input#whatever').val('hi').change();
于 2010-02-11T20:15:23.303 に答える
4

DOM Level 2 Event Specificationによると:

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

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

于 2014-12-16T08:49:00.270 に答える
4

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

于 2010-02-11T20:15:16.717 に答える