0

フォームのフィールドを観察し、変更を報告する

これで、フォームの各フィールドで行われた変更を監視するための簡単なユーティリティ (オブザーバー パターンの一部) を作成しました。

var idInt = setInterval(function() {
  // each input is a document.getElementById(id)
  var len = inputList.lenght;

  while(len--) {
    //send value to somewhere
    someWhere(ininputList[len].value);
  }
}, 40)

しかし、私は次のような問題があります:

  1. マウスで値を変更する場合(カット/ペースト)
  2. プログラムで値を変更するとき

someWhere(ininputList[len].value);イベント(onchange、oncut、onpaste、oninput、onkeyup)を要素に追加してsetIntervalloopを回避しようとしても、更新しない値が取得しますが、プログラムで値を変更しようとするとイベントが発生しません。

これは、要素の値の変化を観察するためのより良いアプローチです (入力 [ボタン | テキスト | パスワード | url | 電子メール]、ラジオ、チェックボックス、選択) プログラムによる変更が監視され、インターフェイス ユーザーを介して変更されることを考慮に入れると、

注:私は生のソリューションを探しています.jquery、prototype、jsクラス、またはネイティブjavascriptだけのフレームワークはありません

4

1 に答える 1

0

以下のコードが機能するため、何が問題なのかわかりません

setInterval(function() {
  var inputList = document.getElementsByTagName('input')
  var len = inputList.length;

  while(len--) {
    console.log(inputList[len].value);
  }
}, 4000)​

変更された値を 4 秒ごとに出力します。ここで実際の動作を確認できますhttp://jsfiddle.net/QKqzT/

于 2012-05-10T17:46:47.330 に答える