3 回答
TA贡献1860条经验 获得超9个赞
所以这很晚了,但是我发现了一个答案,以防万一它对遇到此线程的任何人有用。
对隐藏元素的值更改不会自动触发.change()事件。因此,无论您在哪里设置该值,您都必须告诉jQuery触发它。
function setUserID(myValue) {
$('#userid').val(myValue)
.trigger('change');
}
这样的话
$('#userid').change(function(){
//fire your ajax call
})
应该能按预期工作。
TA贡献1842条经验 获得超12个赞
由于隐藏的输入不会在更改时触发“更改”事件,因此我使用MutationObserver来触发此操作。
(有时隐藏的输入值更改是由其他一些您无法修改的脚本完成的)
在IE10及以下版本中不起作用
MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
var trackChange = function(element) {
var observer = new MutationObserver(function(mutations, observer) {
if(mutations[0].attributeName == "value") {
$(element).trigger("change");
}
});
observer.observe(element, {
attributes: true
});
}
// Just pass an element to the function to start tracking
trackChange( $("input[name=foo]")[0] );
- 3 回答
- 0 关注
- 542 浏览
添加回答
举报