2012-02-09 106 views
5

我試圖捕獲文本輸入字段的值更改時。我正在使用:jQuery的輸入字段更改,即使通過jQuery的值更改

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

如果我直接鍵入新值,這將起作用。但是,輸入字段的值正在被jquery改變。有幾個這些領域,我需要知道什麼時候有任何改變。有沒有辦法檢測到這種變化?

對不起,我不清楚。我不是那個改變價值的人。這是一個插件,我寧願不修改,以防我需要將其移植到另一個項目。

變通

好了,你不能做我想做的事,但這裏是一個變通。我剛剛進行了一次間隔並將我的change事件更改爲each事件。

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

範圍之外的價值你是如何用jQuery改變它。我的意思是這樣做的代碼。難道你不能在代碼改變的同時做一些事情嗎? – Henesnarfel 2012-02-09 21:18:43

+0

我希望我能,但它是一個顏色選擇器插件,正在改變的價值。我只是想在他們改變時應用這些值。 – James 2012-02-09 21:22:15

+0

這個解決方法可以做到這一點,不知道它是否真的增加了頁面加載時間? – redcoder 2014-06-11 15:02:39

回答

11

沒有辦法檢測以編程方式完成的更改。

但是,無論何時修改其值,您都可以觸發change事件。

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

我打算將其標記爲正確,因爲它確實回答了問題。但是,如果您有興趣,我還會在我的代碼中發佈我的變通辦法。 – James 2012-02-09 21:47:08

2

當jQuery的改變值,你可以使用jQuery觸發更改事件之後

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

謝謝,但我沒有控制其他jquery。不過,我找到了一個解決方法。 – James 2012-02-09 21:49:37

1

沒有,當值使用JavaScript改變onchange事件不會被觸發。或者,您可以在更改值時調用onchange事件。

+0

謝謝,但我沒有控制其他jquery。不過,我找到了一個解決方法。 – James 2012-02-09 21:50:34

0

一種選擇是跟蹤你的聽衆

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(); 
})