我已经编写了一个示例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给出了当前但多次执行。
答案 0 :(得分:4)
听起来您想要在输入字段时获取输入字段的当前值,但是如果他们使用退格键则要忽略:
<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>
答案 1 :(得分:1)
如果您希望函数在用户输入完成后获取值,请使用onchange
而不是按键
注意:
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);
}
或者如果它的退格再次忽略