Javascript 防止提交无效电子邮件地址的表单

Javascript 防止提交无效电子邮件地址的表单,javascript,jquery,forms,email-validation,onsubmit,Javascript,Jquery,Forms,Email Validation,Onsubmit,我正在使用这个工具: 。。。验证电子邮件地址是否确实存在 此工具工作正常,但即使验证失败,用户仍可以提交表单。如果用户输入的电子邮件地址无效,我需要向代码中添加什么,以不允许用户提交表单 用于执行验证的代码段: <script type="text/javascript"> var $plugin = new emailValidation( $( "#email"), { token: "[

我正在使用这个工具:

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

此工具工作正常,但即使验证失败,用户仍可以提交表单。如果用户输入的电子邮件地址无效,我需要向代码中添加什么,以不允许用户提交表单

用于执行验证的代码段:

<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> 

var$plugin=新邮件验证(
$(“#电子邮件”){
令牌:“[隐藏]”,
proxyPath:“[隐藏]”,
功能版本:“1.0”,
超时:10000,
inlineMode:正确,
上映:没错,
onSuccess:函数(数据){
//onSuccess回调实现
},
onError:函数(jqXHR、状态、错误抛出){
},
信息:{
emptyEmail:“请输入电子邮件。”,
错误:“请联系益百利QAS支持。”,
超时:“超时。”,
成功:“耶!”
},
风格:{
成功:“成功”,
successInline:“成功内联”,
错误:“错误”,
errorInline:“errorInline”,
加载:“加载”,
更正邮件:“更正邮件”,
emailPicklistHeader:“emailPicklistHeader”,
emailPicklist:“emailPicklist”,
picklistItem:“picklistItem”,
picklistItemText:“picklistItemText”,
关闭按钮:“关闭按钮”,
}
}
);

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

  • 禁用“提交”按钮:

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

    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也可以。

    你能链接到插件文档而不是产品页面吗?“这个工具工作正常”-它只能返回我测试过的几个现有地址的“未知”…我真的不知道其中的值是什么?//您显示的验证方法似乎是异步的,因此您必须阻止用户提交表单,直到您从该异步调用中得到肯定的响应为止。@CBroe-您必须完成这两行才能测试:标记:“[hidden]”,代理路径:“[hidden]”,@卢卡-当然:@juneallison我指的是他们工具的在线版本。谢谢,但我尝试了这两种解决方案,但都没有成功。显然,我用正确的ID替换了myForm或mySubmit。我还会错过什么?根据文档,我尝试用“已验证”替换“电子邮件确认”。我的表单标签是这样的:我确实有一个隐藏字段,看起来像@juneallison,你说的“未工作”是什么意思。您需要检查控制台(F12)是否存在错误或调试代码的事件,以了解实际发生的情况。