2011-07-13 9 views

答えて

2

唯一の解決策のように思えるのは、ポーリングすることです。つまり、setInterval()を使用する必要があります。例としてthis fiddleをご覧ください。コードは

function detectChange(input, interval) { 
    var previous = ""; 

    setInterval(function() { 

     var val = $(input).val(); 
     if ( val != previous) { 
      previous = val; 
      alert("Input has changed"); 
     } 

    }, interval); 
} 

detectChange("input", 100); 

setTimeout(function() { 
    $("input").val("some value!"); 
}, 4000); 
+0

値をポーリングすることなく変更を検出する方法はありません。よりエレガントな方法がなければならない...いいえ? –

+0

動的に値を変更しない場合あなたが持っているのは '.change()'だけですが、それは 'focus'に基づいています。それが言われると、あなたの入力値を変更する何かがあるはずです。つまり、入力が自分自身の変更を検出するのではなく、その関数にジョブを委任することができます。 – vinceh

+0

ええ、しかし、私は他の入力の値を変更する入力の* lot *を持っているので、私のコードはむしろ乱雑になります。 –

関連する問題