【发布时间】:2023-03-06 09:19:01
【问题描述】:
我想仅在输入电子邮件地址但无效时才显示电子邮件地址无效的消息。如果没有输入值,我不想显示消息 - 我只是将输入边框设为红色。
我试过了,但即使字段为空,它也会显示消息:
function validateEmail($email) {
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
return emailReg.test( $email );
}
if($(element).hasClass('email')) {
if( !validateEmail($('.email'))) {
$('<span>Please enter a valid email address</span>').insertAfter($(element));
}
}
我也尝试过使用 jQuery 验证插件,但在这种情况下,它根本不会显示电子邮件错误:
var emails = ['email'];
for(var i=0;i< emails.length;i++) {
var email = emails[i];
rules[email] = {};
rules[email].email = true;
rules[email].required = true;
msgs[email] = {
required:'',
email : "Please enter a valid email address",
}
}
var validateObj = {}
validateObj["rules"] = rules;
validateObj["messages"] = msgs;
validateObj["onkeyup"] = function(element) { $(element).valid();};
validateObj["success"] = function(element) {};
validateObj["submitHandler"] = function (form) {
form.submit();
}
$("#form").validate(validateObj);
【问题讨论】:
-
我目前无法对其进行测试,但是您的 jquery 验证代码看起来非常奇怪且不标准。这是一个很常见的用例,应该有很多代码示例可以使用。避免使用自定义正则表达式进行电子邮件验证,因为它会在太多边缘情况下失败。
-
不是很自定义,我用的是jquery验证插件,就是这么写的。我定义对象规则、消息——它只是语法。
标签: javascript jquery validation email