jQuery电子邮件验证问题

时间:2013-05-09 14:31:10

标签: jquery

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

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

3 个答案:

答案 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语句不需要像您那样反转。读得更好^^