ajax提交前的HTML5验证

Sor*_*00b 34 forms validation ajax jquery html5

这应该很简单,但它让我发疯.我有一个html5表单,我用ajax提交.如果输入的值无效,则会有一个弹出响应告诉您.在运行ajax提交之前,如何检查条目是否有效?

形成:

<form id="contactForm" onsubmit="return false;">
  <label for="name">Name:</label>
  <input type="text" name="name" id="name" required placeholder="Name" />
  <label for="subject">Subject:</label>
  <input type="text" name="subject" id="subject" required placeholder="Subject" />
  <label for="email">Email:</label>
  <input type="email" name="email" id="email" required placeholder="email@example.com" />
  <label for="message">Message:</label>
  <textarea name="message" id="message" required></textarea>
  <input type="submit" id="submit"/>
</form>
Run Code Online (Sandbox Code Playgroud)

提交:

$('#submit').click(function(){
    var name = $("input#name").val();
    var subject = $("input#subject").val();
    var email = $("input#email").val();
    var message = $("input#message").val();

    var dataString = 'email=' + email + '&message=' + message + '&subject=' + subject + '&name=' + name ; 

    $.ajax({
        url: "scripts/mail.php",
        type:   'POST',
        data: dataString,
        success: function(msg){
            disablePopupContact();
            $("#popupMessageSent").css("visibility", "visible");
        },
        error: function() {
            alert("Bad submit");
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

ant*_*nce 50

默认情况下,jQuery对HTML5验证一无所知,因此您必须执行以下操作:

$('#submit').click(function(){
    if($("form")[0].checkValidity()) {
        //your form execution code
    }else console.log("invalid form");
});
Run Code Online (Sandbox Code Playgroud)

  • 我正在寻找OP上的Submit事件上的“ return false”返回。 (2认同)
  • 返回false(防止默认操作)...请参见csbarnes的答案,该答案更为准确。 (2认同)

csb*_*nes 45

如果绑定到提交事件而不是单击它,则只有在通过HTML5验证时才会触发.

如果多次使用它,最好将jQuery选择器缓存在变量中,这样每次访问元素时都不必导航DOM.jQuery还提供了一个.serialize()函数,它将为您处理表单数据解析.

var $contactForm = $('#contactForm');

$contactForm.on('submit', function(ev){
    ev.preventDefault();

    $.ajax({
        url: "scripts/mail.php",
        type:   'POST',
        data: $contactForm.serialize(),
        success: function(msg){
            disablePopupContact();
            $("#popupMessageSent").css("visibility", "visible");
        },
        error: function() {
            alert("Bad submit");
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 这应该是可接受的答案,因为HTML5验证是在提交事件之前触发的。基本上,侦听Submit事件,然后阻止默认操作即可完成这项工作。无需按接受的答案所示调用checkValidity()方法,因为如果未通过HTML5验证,则不会触发Submit事件。 (4认同)