javascript – JQuery Validation Plugin无法使用电子邮件类型吗?
作者:互联网
我已经配置了一个Grunt文件,用我所有的库和我的代码构建一个JS文件,所以我只有一个JS文件包含在我的网站中.这一切都运行正常,但我刚刚添加了JQuery Validate插件(http://jqueryvalidation.org/),这个插件工作但不完全,我认为它是我的代码以及我如何构建它的红色.
但我有多种形式,其中一种是更改用户电子邮件.我还应该在这里说我正在使用CakePHP和它的表单助手构建这个站点(尽管该站点的那一侧完全正常工作而没有任何错误).
这是我正在使用的代码:
$( "#EmailChange" ).validate({
rules: {
'data[Email][currentemail]':{
required: true,
email: true
},
'data[Email][newemail]':{
required: true,
email: true
},
'data[Email][emailconfirm]': {
equalTo: "#NewEmail", <-id for the [email][newemail] input
required: true,
email: true
}
},
messages: {
'data[EmailUpdate][currentemail]': "email address is needed",
'data[EmailUpdate][newemail]': "a vaild email address is needed",
'data[EmailUpdate][emailconfirm]': "second email does not match",
}
});
现在这种方式有效,但是没有正确验证我的电子邮件地址,我会输入,someemail @ something,这将删除或返回有效的电子邮件,然后输入域名后缀.当我在自己的网站上使用电子邮件上的测试字段时,它不会这样做,它只会在用户输入后缀后返回有效状态.
那么我做错了什么?
谢谢.
解决方法:
使用以下代码发送电子邮件
jQuery.validator.addMethod("validEmail", function(value, element)
{
if(value == '')
return true;
var temp1;
temp1 = true;
var ind = value.indexOf('@');
var str2=value.substr(ind+1);
var str3=str2.substr(0,str2.indexOf('.'));
if(str3.lastIndexOf('-')==(str3.length-1)||(str3.indexOf('-')!=str3.lastIndexOf('-')))
return false;
var str1=value.substr(0,ind);
if((str1.lastIndexOf('_')==(str1.length-1))||(str1.lastIndexOf('.')==(str1.length-1))||(str1.lastIndexOf('-')==(str1.length-1)))
return false;
str = /(^[a-zA-Z0-9]+[\._-]{0,1})+([a-zA-Z0-9]+[_]{0,1})*@([a-zA-Z0-9]+[-]{0,1})+(\.[a-zA-Z0-9]+)*(\.[a-zA-Z]{2,3})$/;
temp1 = str.test(value);
return temp1;
}, "Please enter valid email.");
在规则中使用以下
rules: {
'data[Email][newemail]': {
required: true,
validEmail: true
}
}
标签:jquery,javascript,jquery-validate 来源: https://codeday.me/bug/20190716/1477387.html