我的程序应该包含名称搜索和 ID 搜索功能,当用户单击名称搜索按钮时,会触发名称搜索验证以确保所需的文本字段不为空,另一方面,当用户单击 id 搜索按钮时,触发 id 搜索验证以确保不同的必填文本字段不为空。所以在 HTML 文件中,我有以下 jQuery 和 HTML 代码。
$(document).ready(function() {
$('#submitIDSearch').bind('click', validateIDSearch);
$('#submitNameSearch').bind('click', validateNameSearch);
$('#searchLastName').bind('click', validateNameSearch);
$('#searchFirstName').bind('click', validateNameSearch);
$('#searchID').bind('click', validateIDSearch);
});
var validateNameSearch = function(event) {
var btnSrchLastName = getRef('searchLastName');
if (null != btnSrchLastName) {
var len = btnSrchLastName.value.length;
if (0 == len) {
alert('Last Name is a required field, please input Last Name.');
$('#searchLastName').focus();
return false;
}
}
return true;
}
var validateIDSearch = function(event) {
var btnSrchID = getRef('searchID');
if (null != btnSrchID) {
var len = btnSrchID.value.length;
if (0 == len) {
alert('ID is a required field, please input ID.');
$('#searchID').focus();
return false;
}
}
return true;
}
我有以下 HTML 代码:
<form id="infoForm" name="checkAbsenceForm" method="post" action="absenceReport.htm">
<label class="q">ID * <input id="searchID" name="searchID" maxlength="9" /></label>
<input id="submitIDSearch" type="submit" value="Search ID"/>
<hr />
<label class="q">First Name <input id="searchFirstName" name="searchFirstName" maxlength="23"></label>
<br />
<label class="q">Last Name * <input id="searchLastName" name="searchLastName" maxlength="23" /></label>
<input id="submitNameSearch" type="submit" value="Search Name"/>
<hr />
</form>
除了一个问题,当用户点击文本框时,代码行为正确,点击事件会被触发,这会导致警报消息框的预生成。
我观察到,当用户从文本字段中键入 'enter' 键时,会触发 click 事件,而不是 'submit',所以我猜我的监听器只能绑定到 click 事件。
请问是否有一种解决方法可以避免鼠标单击文本框触发事件?
非常感谢!