如何检查格式正确的电子邮件ID

时间:2014-05-01 07:32:55

标签: javascript html

     <script>  
     window.onload = function()
    {
document.getElementById('btn').disabled=true;
function bar() 
{

  var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
 var d=document.getElementById('uid').value;
if( re.test(d))
    document.getElementById('btn').disabled=false;
}
};
</script>
<button type="button" id="btn" >Log-in</button>
 <label for="uid">User Id</label><input type="text" name="uid" id="uid" onKeyUp="return bar()" /> 

我正在尝试检查在文本框uid中输入的电子邮件ID是否格式正确,如果给定的电子邮件ID与表达式匹配,则只会启用btn按钮。当我执行以下任何操作时,即使电子邮件ID格式正确,按钮也会保持禁用状态。帮助!

1 个答案:

答案 0 :(得分:1)

您有范围问题。 bar()函数在window.onload函数中定义,因此无法从您尝试调用它的位置访问(内联onkeyup处理程序)。

将该功能移至全局范围:

function bar() {
    ...
}

window.onload = function () {
    document.getElementById('btn').disabled = true;
};

或者更好的是,将事件附加到window.onload中并完全删除内联onkeyup

DEMO

function bar() {
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    var d = document.getElementById('uid').value;
    document.getElementById('btn').disabled = !re.test(d);
}

window.onload = function () {
    var btn = document.getElementById('btn').disabled = true;
    document.getElementById("uid").onkeyup = bar;
};

使用这种方式,bar可以在onload或全局范围内定义,两者都可以。另外,我更改了bar()中的逻辑。如果您键入有效的电子邮件,它现在将重新禁用,然后使其无效。