HTML5 AJAX验证之前提交(HTML5 validation before ajax subm

2019-08-18 06:50发布

这应该是简单的,但它的驾驶我疯了。 我有我使用Ajax提交HTML5的形式。 如果输入的值无效,还有,告诉你这么一个弹出响应。 我如何检查条目之前,我跑我的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>

提交:

$('#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");
        }
    });
});

Answer 1:

默认情况下,jQuery的不知道的HTML5验证什么,所以你必须做一些事情,如:

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


Answer 2:

如果你绑定到submit事件,而不是点击,如果它通过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");
        }
    });
});


Answer 3:

如果使用的是HTML5表单验证,你必须在发送表单的提交处理Ajax请求。 如果表单验证提交处理程序才会触发。 什么你使用的是一个点击按钮的处理程序,这将始终触发,因为它与表单验证无关。 注意:并不是所有的浏览器支持HTML5的表单验证。



Answer 4:

我更喜欢使用jQuery提交处理程序,你仍然会得到下面的方法应对您的形式。

jQuery('#contactForm').on('submit', function (e) {
    if (document.getElementById("contactForm").checkValidity()) {
        e.preventDefault();
        jQuery.ajax({
            url: '/some/url',
            method: 'POST',
            data: jQuery('#contactForm').serialize(),
            success: function (response) {
                //do stuff with response
            }
        })
    }
    return true;
});


Answer 5:

不完全知道你的意思。 但是,我认为要在实时检查,如果输入是有效的。 如果是这样,你应该使用.keyup代替。点击事件,因为如果用户按下提交这将导致一个动作。 看看http://api.jquery.com/keyup/

有了这个,你可以检查每一个新的字符插入和显示如“无效”的输入,直到你验证IST真。

我希望这回答了你的问题!



Answer 6:

ü也可以使用JQuery验证方法以验证形式等

$( “#形式的ID”)验证()。

其返回布尔值基于表单验证的&也可以看出U使用errorList方法在日志中的错误。

对于上述功能使用U必须包括在脚本文件jquery.validate.js



文章来源: HTML5 validation before ajax submit