override jquery validate plugin email address validation

半腔热情 提交于 2019-11-26 20:37:54
Tom

I wouldn't do this but for the sake of an answer you need to add your own custom validation.

//custom validation rule
$.validator.addMethod("customemail", 
    function(value, element) {
        return /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
    }, 
    "Sorry, I've enabled very strict email validation"
);

Then to your rules add:

rules: {
                    email: {
                        required:  {
                                depends:function(){
                                    $(this).val($.trim($(this).val()));
                                    return true;
                                }   
                            },
                        customemail: true
                    },

Your regex is simply too strict, jQuery is right.

"this is a valid adress !"@yes.it.is

I suggest you to read this : Stop Validating Email Addresses With Your Complex Regex

// Add Custom Email Validation
jQuery.validator.addMethod('customemail', function (emailaddr, element) {
      emailaddr = emailaddr.replace(/\s+/g, '');
      return this.optional(element) || 
      emailaddr.match(/^\b[A-Z0-9._%-]+@@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i);
 });

Try this!

   jQuery.validator.addMethod("customEmail", function(value, element) {
             return this.optional(element) || /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i.test(value);
            }, "Please enter valid email address!");

        $(form).validate({
             rules: {
                 email:{
                     required:true,
                     customEmail:true
                 }
             }
        });
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!