Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于验证用户的简单jquery代码片段';电子邮件地址_Javascript_Jquery_Css_Html - Fatal编程技术网

Javascript 用于验证用户的简单jquery代码片段';电子邮件地址

Javascript 用于验证用户的简单jquery代码片段';电子邮件地址,javascript,jquery,css,html,Javascript,Jquery,Css,Html,我使用下面的javascript代码来验证用户输入的电子邮件地址。我的问题是,我正在使用html5来创建“电子邮件”类型的文本框,目前在最新的IE版本上无法正常工作。我发现自己更喜欢html5,因为它提供了更好的外观和感觉效果。因此我想使用它,同时需要添加一个小片段来检查IE浏览器,如下代码所示 function IsValidEmail(email) { var em= new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]

我使用下面的javascript代码来验证用户输入的电子邮件地址。我的问题是,我正在使用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上不起作用。不过,它可以很好地验证输入的电子邮件地址。
有什么想法可以启发我吗。。。。非常感谢,

您正在向RegExp()构造函数传递一个regex文本,但它需要一个字符串。试试这个:

    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);

您正在向RegExp()构造函数传递一个regex文本,但它需要一个字符串。试试这个:

    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);
用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>

功能IsValidEmail(电子邮件){
//正则表达式在IE中工作,但应该是字符串(参见NNN的答案)
//var em=新的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;//
返回em.test(电子邮件);
}
$(文档).ready(函数(){
$(“#form1”).submit(函数(){
var em=$('#email').val();
如果(!IsValidEmail(em))
{
如果($.browser.msie)
{
警告(“错误的电子邮件”);
$(“#e-valid”).css({'color':'red','padding-left':'5px','font-style':'italic');
$(“#e-valid”).html(“请输入有效的电子邮件地址”);
返回false;
}
}
返回true;
});
});

包装到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>

功能IsValidEmail(电子邮件){
//正则表达式在IE中工作,但应该是字符串(参见NNN的答案)
//var em=新的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;//
返回em.test(电子邮件);
}
$(文档).ready(函数(){
$(“#form1”).submit(函数(){
var em=$('#email').val();
如果(!IsValidEmail(em))
{
如果($.browser.msie)
{
警告(“错误的电子邮件”);
$(“#e-valid”).css({'color':'red','padding-left':'5px','font-style':'italic');
$(“#e-valid”).html(“请输入有效的电子邮件地址”);
返回false;
}
}
返回true;
});
});


天哪!我看到一个jquery标签,只是为了让你知道jquery在他们的验证插件中完成了所有必需的验证(文本、数字、电子邮件),也许你可以使用它,那么你是说它有效还是无效?你的问题是什么?@userD,是的,我已经尝试过了,它也很有效,但现在我想重新使用html5提供的电子邮件文本框的当前效果,并且只添加一个小代码,以便在使用的浏览器是IE且输入的电子邮件地址不正确时显示消息。天哪!我看到一个jquery标签,只是为了让你知道jquery在他们的验证插件中完成了所有必需的验证(文本、数字、电子邮件),也许你可以使用它,那么你是说它有效还是无效?你的问题是什么?@userD,是的,我试过了,它也很有效,但现在我想重新使用html5提供的电子邮件文本框的当前效果,并仅添加一个小代码,以便在使用的浏览器是IE且输入的电子邮件地址不正确时显示消息。事实上,在我将代码包装到文档中后,仍然可以在IE中工作ready@mplungjan-说得好。这个问题太模糊了,我甚至没有想到。事实上,当我把代码包装到文档中后,它仍然可以在我的IE中工作ready@mplungjan-说得好。这个问题太模糊了,我甚至没想到。