2

我有几个只读文本字段和一个用普通的旧 javascript 编写的日期选择器。问题是我需要检测何时设置文本,但由于整个站点都使用相同的 js,所以我不能真正将代码(如something.trigger('change'))放入 js 文件中。有没有其他方法可以在不修改日历js的情况下检测到变化?

4

1 回答 1

2

如果在某些情况下使用 JavaScript 更改值,那么 onchange 不会触发。

突变事件,但它们已被弃用,未来会有突变观察者,但很长一段时间内不会完全支持。那么在此期间你能做什么呢?

您可以使用计时器来检查元素。

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

于 2012-05-16T05:45:09.447 回答