我有一些只读文本字段和一个用简单的旧javascript编写的日期选择器。问题是我需要检测文本何时被设置,但由于在整个站点中使用相同的js,我无法将代码(如something.trigger('change')
)放在js文件中。有没有其他方法来检测更改而不修改日历js?
答案 0 :(得分:2)
如果在某些情况下使用JavaScript更改了值,则onchange不会触发。
有mutation events,但它们已被弃用,未来会有Mutation Observers,但很长一段时间内它们都不会得到完全支持。那么你能在同一时间做什么呢?
您可以使用计时器检查元素。
function addValueListener(elemId, callback) {
var elem = document.getElementById(elemId);
var lastValue = elem.value;
window.setInterval( function() {
var value = elem.value;
if (value !== lastValue) {
callback();
lastValue = value;
}
},10);
}
写成jQuery:
function addValueListener(elemId, callback) {
var elem = $(elemId);
var lastValue = elem.val();
window.setInterval( function() {
var value = elem.val();
if (value !== lastValue) {
callback();
lastValue = value;
}
},10);
}
运行示例:jsFiddle