有没有办法在用户输入的值出现在元素中之前拦截它?我尝试使用 Object.defineProperty
但它似乎不适用于 InputElement.value
因为
var value;
Object.defineProperty($('input')[0], 'value', {
get: function() {return value},
set: function(val) {console.log(val); value = val;}
});
似乎没有改变任何行为。或者 oninput/onchange 是唯一的选择吗?因为我宁愿让我的代码在浏览器之前执行。
最佳答案
如果您想在浏览器输入文本之前检测输入,可以使用 Element.onkeydown
属性(property)。一旦按下该键,在浏览器解释该操作之前,就会触发此事件。
var demo_i = document.getElementById('demo_i');
var demo_d = document.getElementById('demo_d');
demo_i.onkeydown = function(e) {
demo_d.textContent = e.which;
// Returning false stops the event from going any further
return false;
}
<input id="demo_i"><div id="demo_d"></div>
关于javascript - 拦截输入输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32916326/