簡體   English   中英

一個簡單的 jquery 片段來驗證用戶的 email 地址

[英]a simple jquery snippet to validate a user's email address

我正在使用以下 javascript 代碼來驗證用戶輸入的 email 地址。 我的問題是,我將 html5 用於“電子郵件”類型的文本框,目前在最新的 IE 版本上無法正常工作。 我發現自己更喜歡 html5,因為它提供了更好的外觀效果。 因此我想使用它,所以同時需要添加一個小片段來檢查 IE 瀏覽器,如下面的代碼所示,

    function IsValidEmail(email)
{
    var em= new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i);
    return em.test(email);
}
$("#aspformblahblah").submit(function()
{
    var em=$('#email').val();
    if(!IsValidEmail(em))
    {
        if($.browser.msie)
        {
            $("#e-valid").css({'color':'red','padding-left':'5px', 'font-style':'italic'});
            $("#e-valid").html("Please enter a valid email address");
            return false;
        }
    }
    return true;
});

它在所有其他瀏覽器上運行良好,但我似乎滿腦子都是在想我在某處犯的邏輯錯誤,即提交表單時上述代碼在 IE 上不起作用。 不過,它可以很好地驗證輸入的 email 地址。 有什么想法可以啟發我....非常感謝,

包裝在 document.ready 中

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
function IsValidEmail(email) {
    // the regex works in IE but should be a string (see nnnnn's answer) 
    // var em= new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i);
    var em=/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i; // simpler
    return em.test(email);
}
$(document).ready(function() {
  $("#form1").submit(function() {
    var em=$('#email').val();
    if(!IsValidEmail(em))
    {
        if($.browser.msie)
        {
        alert("Wrong email");
            $("#e-valid").css({'color':'red','padding-left':'5px', 'font-style':'italic'});
            $("#e-valid").html("Please enter a valid email address");
            return false;
        }
    }
    return true;
  });
});

</script>

</head>
<body>
<form id="form1">
<input id="email" type="email" value="" /><span id="e-valid"></span><br/>
<input type="submit" />
</form>
</body>
</html>

您正在將正則表達式文字傳遞給 RegExp() 構造函數,但它需要一個字符串。 試試這個:

    function IsValidEmail(email)
   {
      var em= /^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i;
      return em.test(email);
   }

請注意,您不需要變量 em,如果您對不區分大小寫的正則表達式使用“i”標志,則可以簡化您的模式:

   return /^[+a-z0-9._-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i.test(email);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM