trr*_*rrm 19 javascript jquery
我有一个当前正在处理.keypress事件的函数,当用户在文本框中对某些代码执行某些操作时,我也希望在用户清除文本框时触发相同的事件.更改无效,因为它在之后触发用户将焦点更改为其他内容
谢谢
Jon*_*ter 47
该keyup事件将检测用户是否也清除了该框(即退格引发事件,但退格不会引发keypressIE中的事件)
$("#inputname").keyup(function() {
if (!this.value) {
alert('The box is empty');
}
});
Run Code Online (Sandbox Code Playgroud)
正如Josh所说,对于在输入中按下的每个字符代码都会被触发.这主要是表明您需要使用keyup事件来触发退格,而不是keypress您当前使用的事件.
Gon*_*hal 17
Jonathon Bolster的解决方案并未涵盖所有案例.我通过剪切和粘贴来修改它:
$("#inputname").on('change keyup copy paste cut', function() {
//!this.value ...
});
Run Code Online (Sandbox Code Playgroud)
见http://jsfiddle.net/gonfidentschal/XxLq2/
不幸的是,不可能捕获使用javascript设置字段值的情况.如果您自己设置值,那么这不是问题,因为您知道何时这样做...但是当您使用像AngularJS这样的库时,状态发生变化时会更新视图,那么它可能会更加有效.或者您必须使用计时器来检查值.
另请参阅检测jQuery中的输入更改的答案?这表明现代浏览器理解"输入"事件.所以就:
$("#inputname").on('input', function() {
//!this.value ...
});
Run Code Online (Sandbox Code Playgroud)