我没有规定不调用试图使用以下字段设置值的JS:
getElementById(field_name).value = 'someValue'
因此,作为替代,我试图查看是否有一种方法可以拦截/覆盖设置html中字段值的JS,并在满足某些条件的情况下尝试对其进行限制。
请让我知道是否可能?
看来这个问题是this和this的重复,但事实并非如此。这些问题的解决方案需要更改代码,这对我来说不是一个选择。
最佳答案
恐怕您做不到,因此,如果您真的无法更改设置它的代码,那么您将陷入轮询和观察更改的丑陋选择。例如,类似这样的内容:
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();