有没有办法检测何时通过jquery设置值?

时间:2012-05-16 05:40:31

标签: javascript jquery

我有一些只读文本字段和一个用简单的旧javascript编写的日期选择器。问题是我需要检测文本何时被设置,但由于在整个站点中使用相同的js,我无法将代码(如something.trigger('change'))放在js文件中。有没有其他方法来检测更改而不修改日历js?

1 个答案:

答案 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