表单提交甚至在返回false jquery之后

form submitting even after return false jquery

本文关键字:false jquery 之后 返回 表单提交      更新时间:2023-09-26

我的简单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();
                }
            }
        });

Enter键自动提交表单。您可以这样做:

$("#frmSearch").submit(function(e){
   if ($('#frmSearch input').val().length < 3) {
      e.preventDefault();
      alert("SEARCH TEXT TOO SHORT");
   }
}

并且您不是在处理submit事件,而是在处理keydown事件,该事件不会阻止submit调用。

您也可以尝试,使用按键而不使用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);

有时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();
        }
    }
});