我的简单jquery代码显示了alter框,但也提交了表单。为什么会这样?当按下回车键并且长度小于3时,它应该显示错误并且不应该提交表格,但是即使在显示错误之后它也会提交表格。
$('#frmSearch input').keydown(function(e) {
if (e.keyCode == 13) {
if ($('#frmSearch input').val().length < 3) {
alert("SEARCH TEXT TOO SHORT");
return (false);
}
else
{
$('#frmSearch').submit();
}
}
});
答案 0 :(得分:2)
Enter键自动提交表单。你可以这样做:
$("#frmSearch").submit(function(e){
if ($('#frmSearch input').val().length < 3) {
e.preventDefault();
alert("SEARCH TEXT TOO SHORT");
}
}
并且您不处理提交事件但是不停止从呼叫提交的keydown事件。
答案 1 :(得分:1)
您也可以尝试,使用按键不使用 keydown
(function ($) {
$ ('# frmSearch input'). keypress (function (e) {
if (e.KeyCode == 13) {
if ($ ('# frmSearch input'). val (). length <3) {
alert ("SEARCH TEXT TOO SHORT");
return (false);
}
else
{
$ ('# frmSearch') submit ().;
}
}
});
}) (jQuery);
答案 2 :(得分:0)
有时,Enter键可以默认自动提交表单。如果要拦截并阻止该行为,可以停止默认提交。
我会在您的代码中添加e.preventDefault()
。
<强> 更新 强>
$('#frmSearch input').keydown(function(e) {
if (e.keyCode == 13) {
//Prevents default submit
e.preventDefault();
if ($('#frmSearch input').val().length < 3) {
alert("SEARCH TEXT TOO SHORT");
return (false);
}
else
{
$('#frmSearch').submit();
}
}
});