2013-07-06 62 views
0

我必須檢測到該變化時與類變化input值。我的解決辦法:檢測輸入[類型=「文本」]的變化立即

我有這個輸入:

<input type="text" class="inpt" /> 

我有這樣的檢查:

$('input.inpt').on("input change", function() { 
    doStuff(); 
}) 

當我在輸入型的東西,doStuff()立即執行。當我需要在JavaScript中改變輸入的值,我做的:

$('input.inpt').val(value); 
    $('input.inpt').change(); 

這是做到這一點的好辦法(因爲它似乎有點髒用那樣改變功能)?它可以在所有瀏覽器上運行嗎?謝謝。

+0

'上(「輸入」'肯定不會做太多。 .. @hungerpain我想不會,因爲輸入的值可以在JavaScript的一些功能改變(當用戶按下一個鍵時觸發),onkeypress事件(火災,當用戶 – lonesomeday

+3

你可以使用'keypress'着你? – krishgopinath

+0

。 –

回答

4

調用.change()僅僅是.trigger('change')一個快捷方式,即您觸發change事件。這似乎是一個完全可以接受的事情。

+0

實際上,'此方法是前兩個變體中的.on('change',處理程序)的快捷方式,而第三個中的.trigger('change')。「但我完全同意: - D. – Dom

1

正如另一個回答說,要求一個綱領性的變化變化應似乎並不像任何形式的黑客攻擊,而事實上可能是這樣做的最佳和唯一途徑。

var oInpt = $('input.inpt') 
oInpt.on("change", function(oEvent) { }); 

function changeValue(sStr) 
{ 
    oInpt.val(sStr); 
    oInpt.trigger("change"); 
} 
+0

雖然我不確定這是否適用於程序化更改。 –

+0

這基本上是OP已經有的。 –

+0

已更正,更改後的答案以反映更正。 –

0

我覺得做這種方式沒有任何錯誤,但我更喜歡寫一個函數來處理這兩個相依的任務是這樣的:

function setInputValue(inputElement, value) 
{ 
    $(inputElement).val(value); 
    doStuff(); 
}