就像 Blender 说的那样,对于大多数浏览器来说,这是一种默认行为,对于表单中的输入,当您按下 Enter 键时提交表单(就像单击具有提交类型的输入)。
您的第一个代码似乎有点没用,因为它阻止了默认行为(提交表单),但最终提交了表单。
对于这样的问题,超时解决方案还不错,但在我看来太复杂了。
您的页面是一个登录页面,这意味着您希望在填写登录名和密码时允许登录尝试。此外,您不希望在短时间内允许多次提交同一页面。
你可以写一段代码,比如:
// Listening on submit event of the form
$("#FORM_ID").submit(function(submitEvent) {
// Check if the login and password are not empty
if (($.trim($("#LOGIN_INPUT_ID").val())).length == 0 ||
($.trim($("#PASSWORD_INPUT_ID").val())).length == 0)
{
// login or password is empty -> cancel the submit
submitEvent.preventDefault();
// TODO : warn user with a message
// like "Please, fill login and password first !"
return false;
}
// Avoid multiple submit at the same time
// (for stupid guy clicking 10 times in 1 s)
if ($(this).hasData('alreadySubmitted'))
{
// The form is currently already submit -> cancel the submit
submitEvent.preventDefault();
return false;
}
// Set the form "submitted"
$(this).data('alreadySubmitted', true);
// Let the submit do his job...
return true;
});