2012-09-25 114 views
20

如何檢測隱藏輸入值的更改?我已經嘗試過這些方法都沒有成功:隱藏輸入更改事件

$('#id_inpout').live('change',function() { 
     var id_el = $(this).attr('id'); 
     alert(id_el); 
    }); 

$('#id_inpout').change(function() { 
     var id_el = $(this).attr('id'); 
     alert(id_el); 
    }); 

$('#id_inpout').bind('change',function() { 
     var id_el = $(this).attr('id'); 
     alert(id_el); 
    }); 
+6

複製? http://stackoverflow.com/questions/6533087/jquery-detect-value-change-on-hidden-input-field – max4ever

+1

但其他問題的答案都不能接受......即使upvoted的人涉及到調用明確觸發... –

+0

這個答案呢? http://stackoverflow.com/questions/1003053/does-html-hidden-control-have-any-events-like-onchange-or-something – palmplam

回答

25

正如在重複說,正如你所看到的,在JavaScript中不要做改變」觸發change事件。

,因爲我沒有發現在重複了可接受的答案(即不涉及隱藏的值設置方式的改變答案),並假設你真的很需要那(即你不能打電話給你當您更改隱藏輸入Val函數),這裏是你可以做什麼:

function survey(selector, callback) { 
    var input = $(selector); 
    var oldvalue = input.val(); 
    setInterval(function(){ 
     if (input.val()!=oldvalue){ 
      oldvalue = input.val(); 
      callback(); 
     } 
    }, 100); 
} 
survey('#id_inpout', function(){console.log('changed')}); 

不過,我想最好用更直接的解決方案(即調用一個函數,當你改變隱藏的輸入值)。這個函數可能是你自己的一個簡單的事件調度器(基本上是一個包裝函數列表,當它被調用時調用)。

編輯:現在是2015年,人們想知道,不,網絡世界的最新進展都沒有解決這個問題。突變觀察者不會觀察輸入的值屬性(它不是真正的DOM),而且ES6對象觀察者也對這些本地對象無能爲力。

+0

感謝的dystroy,調查功能的工作完美 – chokrijobs

+0

thak的全部,我將使用測量功能 – chokrijobs

+0

看來,與突變觀察員它的工作原理:http://stackoverflow.com/a/31719339/2418749 –

68

你也可以使用trigger('change')分配新的值之後,隱藏輸入:

$('#hidden_input').val('new_value').trigger('change'); 
+1

+1非常好!正是我需要的。爲什麼我沒有想到這一點? – GreatSeaSpider

+0

在我的問題上有所幫助,謝謝 –

+8

你也可以使用$('#hidden_​​input')。val('new_value')。change(); –