2012-02-09 15 views
5

テキスト入力フィールドの値が変更されたときにキャプチャしようとしています。私は以下を使用しています:jqueryによって値が変更されてもjquery入力フィールドが変更される

$("input[name=color]").change(function(){ 

これは、新しい値を直接入力すると機能します。しかし、入力フィールドの値はjqueryによって変更されています。これらのフィールドのいくつかがあり、変更されたときを知る必要があります。この変更を検出する方法はありますか?

申し訳ありませんが、私は明確ではありませんでした。私は価値を変える人ではない。私が別のプロジェクトに移植する必要がある場合には、私はむしろ変更したくないというアドオンです。

WORK-AROUND

[OK]を、あなたは私がやりたいことができないので、しかし、ここでは、回避策です。私はちょうど間隔を作ってchangeイベントをeachイベントに変更しました。

setInterval(function(){ 
    $("input[name=color]").each(function(){ my code }) 
},100); 
+0

の範囲外の値を追跡することです。私はそれをやっているコードを意味します。コードがそれを変更していると同時に何かをすることはできませんか? – Henesnarfel

+0

できたらいいですが、値を変更しているのはカラーピッカーのプラグインです。私はちょうど彼らが変化するように値を適用したい。 – James

+0

この回避策では、実際にページの読み込み時間が増加するかどうかはわかりません。 – redcoder

答えて

11

プログラムで行われた変更を検出する方法はありません。

ただし、値を変更するたびにchangeイベントをトリガーできます。

$("input[name=color]").val("newValue").change(); 
+1

質問に答えているので、これを正しいとマークします。しかし、あなたが興味を持っていれば、自分のコードで私の回避策を投稿しています。 – James

2

jqueryのことで値を変更するときは、jQueryを使って変更イベントをトリガーすることができ、その後

$("input[name=color]").val('someValue').trigger('change'); 
+0

ありがとうございますが、私は他のjqueryを制御していませんでした。しかし、私は回避策を見つけました。 – James

1

いいえ、値はJavaScriptを使用して変更されたときのonchangeイベントがトリガされることはありません。あるいは、値を変更するときにonchangeイベントを呼び出すこともできます。

+0

ありがとう、私は他のjqueryを制御していませんでした。しかし、私は回避策を見つけました。 – James

0

1つのオプションは、あなたがjQueryを使ってそれを変更する方法をごリスナー

function foo() { 
    var value = null; 
    $("select#thingy").on("change", function (e) { 
    let p = $(this).children("#choose-me").val(); 
    value = value === p ? null : p; 
    $(this).val(value); 
    }); 
} 

$(function() { 
    foo(); 
}) 
関連する問題