0

我发现了一个 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;
      }
    }

即使电子邮件有效,表单仍然返回无效。

4

3 回答 3

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/

于 2013-05-09T15:07:44.210 回答
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

    }

做出改变,它开始工作。

于 2013-05-09T14:41:06.197 回答
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 语句不需要像您那样反转。读起来好一点^^

于 2013-05-09T14:46:35.783 回答