猿问

jQuery-检测隐藏输入字段上的值更改

我有一个隐藏的文本字段,其值通过AJAX响应进行更新。


<input type="hidden" value="" name="userid" id="useid" />

当此值更改时,我想触发一个AJAX请求。谁能建议如何检测更改?


我有以下代码,但不知道如何查找值:


$('#userid').change( function() {  

    alert('Change!'); 

}) 


慕容708150
浏览 543回答 3
3回答

慕码人2483693

所以这很晚了,但是我发现了一个答案,以防万一它对遇到此线程的任何人有用。对隐藏元素的值更改不会自动触发.change()事件。因此,无论您在哪里设置该值,您都必须告诉jQuery触发它。function setUserID(myValue) {&nbsp; &nbsp; &nbsp;$('#userid').val(myValue)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.trigger('change');}这样的话$('#userid').change(function(){&nbsp; &nbsp; &nbsp; //fire your ajax call&nbsp;&nbsp;})应该能按预期工作。

红颜莎娜

由于隐藏的输入不会在更改时触发“更改”事件,因此我使用MutationObserver来触发此操作。(有时隐藏的输入值更改是由其他一些您无法修改的脚本完成的)在IE10及以下版本中不起作用MutationObserver = window.MutationObserver || window.WebKitMutationObserver;var trackChange = function(element) {&nbsp; var observer = new MutationObserver(function(mutations, observer) {&nbsp; &nbsp; if(mutations[0].attributeName == "value") {&nbsp; &nbsp; &nbsp; &nbsp; $(element).trigger("change");&nbsp; &nbsp; }&nbsp; });&nbsp; observer.observe(element, {&nbsp; &nbsp; attributes: true&nbsp; });}// Just pass an element to the function to start trackingtrackChange( $("input[name=foo]")[0] );
随时随地看视频慕课网APP

相关分类

JQuery
我要回答