jquery - ajax 提交前的 HTML5 验证

标签 jquery ajax html forms validation

这应该很简单,但它让我发疯。我有一个用 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");
        }
    });
});

最佳答案

如果您绑定(bind)到提交事件而不是单击,则只有在它通过 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");
        }
    });
});

关于jquery - ajax 提交前的 HTML5 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15713491/

相关文章:

css - 我的 CSS 未应用于具有 ID 的元素

jquery - DataTables 和 moment.js 未正确按日期排序

javascript - 第一次单击时不会开始滚动列表元素

javascript - 如何禁用youtube提供的右键单击选项

jquery - WCF GET URL 长度限制问题 : Bad Request - Invalid URL

php - 使用 php 或 Ajax 或 Jquery 提取 url 数据和图像

jquery - 使用 JavaScript 向 JSF 发送 Ajax 请求

javascript - 如何在不点击任何按钮的情况下调用 HTML 中的 JavaScript 函数?

javascript - 使用 JavaScript 创建和复制/复制选择/选项列表菜单

javascript - Android浏览器快速连续两次乱码事件