仅调用一次 onkeyup 函数
Calling onkeyup function only once
我写了一个示例HTML页面
<html>
<head>
<script>
function validate() {
alert(document.getElementById('newpass').value);
}
</script>
</head>
<body>
<input type="text" id="newpass" onkeyup="validate();" />
</body>
</html>
但是在像我按退格键这样的情况下,该函数会被多次调用。如何使其仅执行一次?
我想做的只是获取事件上输入框的当前值,当前 onkeypress 给出的不是当前值,而是前一个。 OnKeyUp 提供电流,但正在执行多次。
听起来您想在有人键入时获取输入字段的当前值,但如果他们使用退格键,则希望忽略:
<html>
<head>
<script type="text/javascript">
function validate(that,e){
var eventObject = window.event? event : e;
var keyCode = eventObject.charCode? eventObject.charCode : eventObject.keyCode;
if (keyCode != 8) {
alert(that.value);
}
}
</script>
</head>
<body>
<input type="text" id="newpass" onkeyup="validate(this,event);" />
</body>
</html>
如果您希望函数在用户完成键入时获取值,请使用 onchange
而不是 on 键
注意: onkeyup
正在正常工作。如果释放密钥,则会调用一次密钥。如果你坚持退格然后释放,那么它只会被调用一次。
onkeypress
不会获取该值,因为事件是在存储值之前启动的。
另一种选择是忽略退格
function validate(event) {
var keynum;
if (window.event) {
keynum = window.event.keyCode;
} else if (event.which) {
keynum = event.which;
}
if (keynum == 8) { // backspace
return;
}
alert(document.getElementById('newpass').value);
}
或者你可以检查上一个键,如果它相同,则忽略它
var previousKey;
function validate(event) {
var keynum;
if (window.event) {
keynum = window.event.keyCode;
} else if (event.which) {
keynum = event.which;
}
if (keynum == previousKey) { // backspace
return;
}
previousKey = keynum;
alert(document.getElementById('newpass').value);
}
或者如果它再次是退格键,请忽略
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 只在宽度以下和宽度以上各准备一次
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- Angularjs:空对象,当只有一次点击时
- 在Angular应用程序中每个帖子投票一次
- 主干模型更改事件只触发一次
- 使用每500ms运行一次的jquery函数是个好主意吗
- For循环在Jquery中只运行一次
- 仅调用一次 onkeyup 函数