【问题标题】:JQuery Validation Plug In is forcing a double click to submit the formJQuery Validation Plug In 强制双击提交表单
【发布时间】:2011-03-12 22:31:43
【问题描述】:

我必须在我的表单上单击两次提交按钮才能提交它。我如何做到这一点,以便用户只需点击提交?但是,我不想启用 onfocusout 或 onkeyup。我只想通过单击提交按钮来验证我的表单。

    $(document).ready(function() {
        $.validator.setDefaults({
          onfocusout: false,
          onkeyup: false
        });

        $.validator.addMethod("username", function(value, element) {
           return this.optional(element) || /^[a-z]+$/i.test(value);
            }, "Your username may only contain letters");

        var validator = $("#registerForm").validate({
          showErrors: function(errorMap, errorList) {
            $("#registerForm").find("input").each(function() {
                $(this).removeClass("error");
            });
            $("#errorcontainer").html("");
            if(errorList.length) {
              $("#errorcontainer").html(errorList[0]['message']);
              $(errorList[0]['element']).addClass("error");
              $('#errorcontainer').css('display','none');
              $('#errorcontainer').fadeIn(400);
            }
            else {
              $('#errorcontainer').css('display','none');
            }
          },

          rules: {
            username: {
              required: true,
              rangelength: [3,15],
              remote: "usernamevalidation.php"
            },
            password: {
              required: true,
              rangelength: [5,20]
            },
            passwordconfirm: {
              required: true,
              equalTo: "#password"
            },
            email: {
              required: true,
              email: true,
              remote: "emailvalidation.php"
            }
          },

          messages: {
            username: {
              required: "You must enter a username.",
              rangelength: "Your username must be between {0} and {1} letters.",
              remote: "Your desired username is already in use."
            },
            password: {
              required: "You must enter a password.",
              rangelength: "Your password must be between {0} and {1} letters."
            },
            passwordconfirm: {
              required: "Your passwords must match.",
              equalTo: "Your passwords must match."
            },
            email: {
              required: "You must enter an email address.",
              email: "Your email address is not valid.",
              remote: "This email is already in use."
            }
          }
        });
      });

【问题讨论】:

  • 您是否尝试将onsubmit: true 添加到默认值?
  • 我刚刚做了,不幸的是它没有工作:/
  • 如果你需要帮助你应该帮助我们帮助你。链接插件的源代码,更重要的是,链接到一个示例,以便我们重现问题。

标签: jquery forms jquery-plugins validation


【解决方案1】:

您好,我使用了 jquery validate 自带的 shubmitHandler

submitHandler: function(form) { form.submit(); return false });

希望对你有帮助

【讨论】:

  • 这背后的逻辑是什么?
【解决方案2】:

这是为我解决此问题的原因:

仅供参考,我也在使用 jQuery UI (v1.8.11),上面没有任何问题:

希望对你有帮助!

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,并通过在我的验证中添加以下内容来解决它:

    $("#myform").validate({
      onfocusout: false
    });
    

    https://jqueryvalidation.org/validate/查看更多信息

    【讨论】:

      【解决方案4】:

      这样使用遥控器

      remote:{
      url: "emailvalidation.php",
      async:false
      }
      

      这里的“async:false”是允许在第一次点击时提交表单, 希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多