2011-07-13 68 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

是的,但是因爲我有很多輸入改變了其他輸入的值,所以它會讓我的代碼變得相當混亂。當你說改變是基於焦點時,你的意思是什麼? –