gpt4 book ai didi

javascript - 当我按下回车键时触发两个事件

转载 作者:行者123 更新时间:2023-11-28 20:49:24 26 4
gpt4 key购买 nike

在我的代码中,标题部分有以下 javascript 代码块

    function validateForm(bid) {
switch (bid) {
case "submitIDSearch":
alert("submitIDSearch");
return false;
case "submitNameSearch":
alert("submitNameSearch");
return false;
}
}
function fKeyDown(e) {
var kc = window.event ? window.event.keyCode : e.which;
if (kc == 13) {
document.getElementById('submitNameSearch').click();
}
}

然后我有以下 HTML 代码块

    <form name="checkAbsenceForm" method="post" action="absenceReport.htm" onsubmit="return validateForm(this.submited)">
<label class="q">ID * <input id="searchRUID" name="searchID" maxlength="9" /></label>
<input id="submitIDSearch" type="submit" value="Search ID" onclick="this.form.submited = this.id;" />
<hr />
<label class="q">First Name <input id="searchFirstName" name="searchFirstName" maxlength="23" onKeyDown="javascript:fKeyDown(event);"/></label>
<br />
<label class="q">Last Name * <input id="searchLastName" name="searchLastName" maxlength="23" onKeyDown="javascript:fKeyDown(event);" /></label>
<input id="submitNameSearch" type="submit" value="Search Name" onclick="this.form.submited = this.id;" />
</form>

发生的情况是,当我在 searchLastName 输入文本框中按 Enter 键时,会弹出两个警报消息框。一个显示 submitNameSearch,另一个显示 submitIDSearchsubmitNameSearch 是所需的事件,但 submitIDSearch 不是,我认为它是默认以某种方式触发的。

请问,当我在searchLastName输入文本框中按Enter键时,是否有办法摆脱submitIDSearch事件?

非常感谢!

最佳答案

当您在表单中按 Enter 时,表单即被提交。这就是第二次调用 validateForm 的原因。

两种解决方案:

1) 删除 onKeyDown="javascript:fKeyDown(event);" 以在 onsubmit=... 上定义正常验证> 申请。

2)fKeyDown 中,添加 e.preventDefault(); 以阻止默认处理按键事件:

function fKeyDown(e) {
var kc = window.event ? window.event.keyCode : e.which;
if (kc == 13) {
document.getElementById('submitNameSearch').click();
e.preventDefault();
}
}

但如果您真的在 fKeyDown 中这样做,解决方案 1 就足够了。

关于javascript - 当我按下回车键时触发两个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12784005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com