我发现了一个jquery电子邮件验证,它可以自行运行。我现在已将其添加到其他函数以验证复选框和空字段。完整代码:http://jsfiddle.net/vUAGs/4/
function validateEmail(email) {
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if( !emailReg.test( email ) ) {
add_color(email, 'orange');
return false;
} else {
add_color(email, white);
return true;
}
}
即使电子邮件有效,表单仍然无效。
答案 0 :(得分:2)
我对你的小提琴进行了一些修改,现在它可以工作....你可以改进代码;)
HTML:
<input class="email_val" type="email" id="emailin" value=""/>
JS:
function validate_form(){
$('form input:not(.checkbox_wrapper input, .email_val), textarea').each(function(){
if ($(this).val() == '') {
add_color($(this), red);
}
else {
add_color($(this), white);
}
});
var emailin = $('#emailin').val();
return (validateEmail(emailin) && check_Radio_Checkb() && true);
}
function validateEmail(emailin) {
var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
alert(regex.test(emailin));
if( !regex.test( emailin ) ) {
add_color(email, 'orange');
return false;
} else {
add_color(email, white);
return true;
}
}
在这里看到令人担忧的小提琴: http://jsfiddle.net/vUAGs/9/
答案 1 :(得分:1)
您将jQuery对象传递给validateEmail,而不是电子邮件地址。
function validate_form(){
$('form input:not(.checkbox_wrapper input, .email_val), textarea').each(function(){
if ($(this).val() == '') {
add_color($(this), red);
}
else {
add_color($(this), white);
}
});
// V right here
return (!validateEmail(email.val()) && check_Radio_Checkb() && true); // Notice change here
}
进行更改并开始工作。
答案 2 :(得分:0)
由于您传递的是输入字段,因此仍需要获取输入字段的值。
演示:http://jsfiddle.net/tive/vUcVa/
你也可以在函数范围内声明emailReg
全局时缩短你的函数:
function validateEmail(email) {
var isValid = emailReg.test(email.val());
if (!isValid) {
add_color(email, 'orange');
} else {
add_color(email, "green");
}
alert(isValid);
return isValid;
}
请注意,validate_form()
函数中的return语句不需要像您那样反转。读得更好^^