我有一个函数(验证),它首先在前端验证正确的电子邮件格式(以避免大多数垃圾邮件)。目前它验证单个字段并且工作正常。我尝试修改它以使用“email”类验证任何字段,因为同一页面上有多个电子邮件字段。第二个函数(validateAny)部分工作,它验证并显示错误消息,但不会像在第一个(验证)函数中那样向元素添加/删除错误类。我在这里错过了什么?此外,我希望它不验证字段是否为空,然后我希望检查在提交按钮上。查看jsfiddle
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
function validate(){
//$("#wrong-email-mess-create-process").text("");
var email = $("#new-usr-name").val();
if (validateEmail(email)) {
$("#new-usr-name").removeClass('error');
$("#new-usr-name").prev().removeClass('error');
$(".error-mess").fadeOut('fast');
//$("#wrong-email-mess-create-process").text(email + " is valid :)");
} else {
$("#new-usr-name").addClass('error');
$("#new-usr-name").prev().addClass('error');
$(".error-mess").fadeIn('fast');
//$("#wrong-email-mess-create-process").text(email + " is not valid :(");
}
return false;
}
$("#new-usr-name").bind("blur", validate);
function validateAny(efield){
var email = $(efield).val();
if (validateEmail(email)) {
$(efield).removeClass('error');
$(efield).prev().removeClass('error');
$(".error-mess").fadeOut('fast');
} else {
$(efield).addClass('error');
$(efield).prev().addClass('error');
$(".error-mess").fadeIn('fast');
}
return false;
}
$('.email').blur(function(){
if( this.value ) {
validateAny(this.id);
}
});
答案 0 :(得分:1)
我相信它是因为你在模糊事件中传递了id而不是字段。
$('.email').blur(function(){
if( this.value ) {
validateAny(this);
}
});
或者在您的validateAny中,您需要添加id选择器,然后继续使用在函数的其余部分中选择的jquery对象:
var $field = $('#' + efield);
var email = $field.val();
答案 1 :(得分:1)
function validateAny(efield){
efield = '#' + efield;
var email = $(efield).val();
if (validateEmail(email)) {
$(efield).removeClass('error');
$(efield).prev().removeClass('error');
$(".error-mess").fadeOut('fast');
} else {
$(efield).addClass('error');
$(efield).prev().addClass('error');
$(".error-mess").fadeIn('fast');
}
return false;
}