我没有规定不调用试图使用以下字段设置值的JS:

getElementById(field_name).value = 'someValue'


因此,作为替代,我试图查看是否有一种方法可以拦截/覆盖设置html中字段值的JS,并在满足某些条件的情况下尝试对其进行限制。

请让我知道是否可能?

看来这个问题是thisthis的重复,但事实并非如此。这些问题的解决方案需要更改代码,这对我来说不是一个选择。

最佳答案

恐怕您做不到,因此,如果您真的无法更改设置它的代码,那么您将陷入轮询和观察更改的丑陋选择。例如,类似这样的内容:

function polledInterceptor(id, callback) {
    var element = document.getElementById(id);
    var value = element.value;
    var timer = setInterval(function() {
        if (value !== element.value) {
            value = callback(element, value);
            if (value !== null) {
                element.value = value;
            }
        }
    }, 30); // 30 = 30ms
    return {
        stop: function() {
            clearTimeout(timer);
        }
    };
}


...然后像这样使用它:

var poller = polledInterceptor("field_name", function(element, oldValue) {
    var newValue = element.value;
    // ...decide what to do...
    return "someValue"; // or return null to leave the value unchanged
});


准备停止时:

poller.stop();

09-10 10:55
查看更多