【发布时间】:2017-10-19 08:24:32
【问题描述】:
在以编程方式更改值的 keydown 或 keypress 事件中调用的 preventDefault() 不会考虑更改,也不会在输入文本退出时触发 onchange 事件。
示例代码:
$('#textbox1').on('change', function() {
alert('onchange called');
});
$('#textbox1').on('keydown', function(event) {
if(event.key=='a') {
$(this).val('A');
//event.target.value = 'A';
event.preventDefault();
}
});
在调用 onchange(保留输入文本)后,仅输入 char 'a' 并再次保留输入。
小提琴代码:http://jsfiddle.net/gxx5744s/1/
什么是使用 onchange 事件来检查值是否已更改?一对旧/新值变量?一个布尔值? 可以和它互动吗?
Keydown 事件默认也可能这样做。
【问题讨论】:
-
我猜触发
onchange是您正在阻止的default的一部分。顺便问一下,你的问题是什么?您想知道如何在您的操作之后手动触发 onchange 吗? -
如果我手动触发 onchange 事件,它每次都会被调用,而不仅仅是当我离开输入焦点并改变值时。
标签: javascript onchange keypress keydown preventdefault