【问题标题】:Ajax submit form with jquery not validatingAjax 提交表单与 jquery 未验证
【发布时间】:2019-04-28 23:57:05
【问题描述】:

你能帮我看看上面的代码吗?

我,试图在那里进行一些验证,但验证没有被执行,并且表单在没有验证的情况下提交:

HTML:

              <form method="post" action="" id="subscription-form">
                <div class="form-group">
                  <input class="subscribe-email" type="email" name="email" placeholder="youremail@example.com" required>
                  <p><span class="error-message">Please enter a valid email</span></p>
                </div>
                <button id="" class="" type="submit"><span>Subscribe</span></button>
              </form>

JS:

$(document).ready(function() {

    $('#subscription-form').on('submit', function (e) {

      var form = $(this);
      var regexEmail = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
      var url = "https://mycustomapi.net";

      if (!$('.subscribe-email').val().match(regexEmail)) {
        $('.error-message').hide();
        $.ajax({
          type: "POST",
          url: url,
          data: form.serialize(),
          success: function (data) {
            $('#subscribed-error').hide()
            $('#subscribed-feedback').show()
            $('#subscription-form').hide()
          },
          error: function () {
            $('#subscribed-error').show()
            $('#subscribed-feedback').hide()
            $('#subscription-form').show()
          }
        });
        console.log('email submitted');
        e.preventDefault();
        return false;
      }
      else {
        $('.error-message').show();
        e.preventDefault();
        return false;
      }
    });

  });

谢谢

【问题讨论】:

    标签: jquery regex validation


    【解决方案1】:

    您的错误是 !运营商

    $(document).ready(function() {
    
        $('#subscription-form').on('submit', function (e) {
    
          var form = $(this);
          var regexEmail = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/g;
          var url = "https://mycustomapi.net";
    
          if ($('.subscribe-email').val().match(regexEmail)) {
            $('.error-message').hide();
            $.ajax({
              type: "POST",
              url: url,
              data: form.serialize(),
              success: function (data) {
                $('#subscribed-error').hide()
                $('#subscribed-feedback').show()
                $('#subscription-form').hide()
              },
              error: function () {
                $('#subscribed-error').show()
                $('#subscribed-feedback').hide()
                $('#subscription-form').show()
              }
            });
            console.log('email submitted');
            e.preventDefault();
            return false;
          }
          else {
          	console.log("not submitted");
            $('.error-message').show();
            e.preventDefault();
            return false;
          }});
    });
    <form method="post" action="" id="subscription-form">
                    <div class="form-group">
                      <input class="subscribe-email" type="text" name="email" placeholder="youremail@example.com" required>
                      <p><span class="error-message">Please enter a valid email</span></p>
                    </div>
                    <button id="" class="" type="submit"><span>Subscribe</span></button>
                  </form>

    【讨论】:

    • 是的,!是主要问题,但即使在修复之后,也不会出现错误消息。 jquery 中的所有选择器都使用 ID 选择器,即 '#' 并且 DOM 具有所有类,因此选择器需要是第一个类 'dot' 而不是 '#'
    • 感谢您的回复 xKurisu。 @DM,即使在这些更改之后(!运算符和“#”到“。”“errormessage”上的节目($('.error-message').show();)也没有工作
    • Done 删除了 !important 这里:#error-message{ display: none;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多