javascript - 为什么我的电子邮件验证在 bootstrap 和 html5 中不起作用?

标签 javascript jquery html twitter-bootstrap

我的页面上有以下表单:

<div class="form-group">

    <form class="form-horizontal general subscribe" name="commentform" id="subscribe" method="post" action="#">
    <div class="col-lg-8 col-md-8 col-xs-8 lower">
      <input type="email" placeholder="Enter your email" class="email requiredField form-control" name="subscribe_email" />
    </div>
    <div class="col-lg-4 col-md-4 col-xs-4">
      <input type="submit" class="btn btn-fill btn-info form_submit" value="Subscribe"/>
    </div>
    <div id="form_results"></div>
    </form>
 </div>

我处理电子邮件的 jquery 代码如下:

jQuery(document).ready(function($) {
    "use strict";

    $('.form_submit').click(function() {
      var form = $(this).parents('form');

      $.ajax({
        url: 'http://mywebservice/mail',
        type: "POST",
        data: {
          email: $('input[name=subscribe_email]').val()
        },
        dataType:'json',
        success: function(response) {
          output = '<p>Thanks, we will contact you soon!</p>';

          $("#contacts_form .form_item").val('');
          form.find('.form_inner').slideUp();
          form.find("#form_results").hide().html(output).slideDown();
        }
     });
     return false;
   });
});

现在,每次用户按下“订阅”按钮时,电子邮件都会成功添加到数据库中,但问题是电子邮件未使用官方电子邮件模式进行验证。我认为在html5中唯一必要的检查是这个<input type="email"但它无法正常工作...我怎样才能防止用户向数据库添加错误的电子邮件地址?

最佳答案

您需要为要验证的字段添加required属性

<input type="email" placeholder="Enter your email" class="email requiredField form-control" name="subscribe_email" required="required" />

如果您使用普通的提交按钮提交表单,则必填字段会自动验证。

如果您正在提交或在提交按钮上调用javasript函数,那么 您可以使用form.checkValidity()来验证必需的控件。

jQuery(document).ready(function($) {
    "use strict";

    $('.form_submit').click(function(){
        var form = $(this).parents('form');
        form.checkValidity()
            $.ajax({
                url: 'http://mywebservice/mail',
                type: "POST",
                data: {
                    email: $('input[name=subscribe_email]').val()

                },
                dataType:'json',
                success: function(response)
                {
                    output = '<p>Thanks, we will contact you soon!</p>';
                    $("#contacts_form .form_item").val('');
                    form.find('.form_inner').slideUp();
                    form.find("#form_results").hide().html(output).slideDown();
                }
            });
    return false;
});

});

关于javascript - 为什么我的电子邮件验证在 bootstrap 和 html5 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37897679/

相关文章:

javascript - 从 Windows Azure 移动服务中的读取请求获取 ID

javascript - 使用 PrototypeJS 1.6 访问 anchor 上的 HTML 数据属性

javascript - 即使重新选择相同的选项,也会为选择运行更改事件

html - 为什么链接背景与 parent 的 sibling 重叠

javascript - 如何通过单击谷歌表格中的单元格来运行 javascript?

javascript - 悬停、焦点和模糊冲突

JQuery 自动完成并不总是触发

jquery 1.9.1 .trigger() 不将参数传递给点击处理程序

jquery - 如何使 bootstrap 3 工具提示与溢出 :hidden? 的父 div 一起工作

html - 如何将 div/占位符放入 bootstrap 网格