javascript - 防止因电子邮件地址无效而提交表单

标签 javascript jquery forms email-validation onsubmit

我正在使用这个工具: https://www.edq.com/real-time-email-validation/

...验证电子邮件地址是否确实存在。

该工具工作正常,但即使验证失败,用户仍然可以提交表单。我需要在代码中添加什么,以便在用户输入无效的电子邮件地址时不允许他们提交表单?

执行验证的代码片段:

<script type="text/javascript">

        var $plugin = new emailValidation(              
          $( "#email"), {
            token: "[hidden]",
            proxyPath:  "[hidden]",
            featureVersion:  "1.0" ,
            timeout: 10000,
            inlineMode: true,
            showLoading: true,
            onSuccess: function (data) {
            // onSuccess callback implementation
            },
            onError: function (jqXHR, status, errThrown) {

            },
            messages: {
                emptyEmail:  "Please enter email.",
                error:  "Please contact Experian QAS support.",
                timeout:  "Timeout.",
                success: "yay!"
            },
            styles: {
                success: "success",
                successInline: "success-inline",
                error: "error",
                errorInline: "error-inline",
                loading: "loading",
                correctionEmail: "correctionEmail",
                emailPicklistHeader: "emailPicklistHeader",
                emailPicklist: "emailPicklist",
                picklistItem: "picklistItem",
                picklistItemText: "picklistItemText",
                closeButton: "closeButton",
            }
          }
      );


        </script> 

最佳答案

关键在于小部件事件:onSuccessonError。使用它们,您可以通过多种方式做到这一点,例如:

  1. 禁用提交按钮:

    onSuccess: function (data) {
        $('#mySubmit').prop("disabled", null);
    },
    onError: function (jqXHR, status, errThrown) {
        $('#mySubmit').prop("disabled", "disabled");
    }
    
  2. 阻止表单提交:

    onSuccess: function (data) {
        $('#myForm').data("email-ok", true);
    },
    onError: function (jqXHR, status, errThrown) {
        $('#myForm').data("email-ok", false);
    }
    
    // On form
    $("#myForm").on("submit", function(e) {
        if (!$(this).data("email-ok")) {
            e.preventDefault();
            // show an error message 
        }
    });
    

在这两种情况下,您都必须等待服务的响应,然后管理您的表单。我认为选项 #2 更好,但选项 #1 也可以。

关于javascript - 防止因电子邮件地址无效而提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50743218/

相关文章:

jquery - 如果一行中只有一个可见的表格单元格,如何动态添加 .attr ('colspan' , '100' )?

javascript - 使用 jQuery 改变 psudo 类

javascript - 使用 localstorage 存储表数据并将其传递到表单

asp.net - 使用 SPAN 文本而不是输入或选择控件的表单样式

javascript - Javascript 中 URL 的 HTTP 状态代码

javascript - 在 Chrome 中使用 tabindex 使元素能够接收按键输入的替代方案

javascript - 不遍历数组中的所有项目

javascript - Jade textarea中的长文本 block ?

javascript - 如何在 jQuery DataTables 中按日期范围添加自定义搜索?

php - 无法以 html 形式保存 textarea 的数据