5

入力フィールドのリストがあります。一部は読み取り専用フィールドです。入力フィールドで何かが変更されたときにトリガーする .keyup() イベントを使用しています。ただし、読み取り専用フィールドには影響しません。どういうわけか私はそれらのフィールドも変更したい. 何か助けはありますか?

4

2 に答える 2

9

focus読み取り専用の入力フィールドを呼び出すと、keyupイベント発生します。ただし、そのフィールドに入力しても値は変わりません (結局、読み取り専用です)。value代わりに、その属性の変化をリッスンする必要があるのではないでしょうか?

この回答が示唆するようにinput、次のことを聞くことをお勧めします。propertyChange

$('input').bind('input propertychange', function() {
    // Do something
});

このようにして、入力値が(何らかの手段で)変更されると、通知されます。編集:プログラムで値を変更すると機能しません。この場合、クロスブラウザーで実行可能な唯一の代替手段には、ポーリングが含まれます (たとえば、 this )。より良いオプションは、ビューとモデルを明確に分離しながら、これを自動化するknockout.jsなどのフレームワークを使用することです。ここに例があります。


更新:削除された回答でコメントを読んだことを思い出します。入力の値をプログラムで設定していると述べていますが、それは正しいですか? (10,000 担当者の一部のユーザーはそれを元に戻せますか?) その場合、値を変更しているコードでリスナーを直接トリガーしないのはなぜですか?

$(link).click(function() {
    $(readonlyInput)
        .val("some val") // Update the value
        .trigger('keyup'); // Trigger the listener
});
于 2012-08-13T05:40:03.010 に答える