2016-03-17 101 views
0

我正在制作一个简单的表单,它从文本输入中获取值,检查电子邮件地址中的所有字符是否存在,并返回true或false。根据许多不同的资源,如果它返回false,则表单不应该被提交。但是,当我在JS bin中测试它时,它会提交它。下面的代码:验证电子邮件时无法停止提交表单

function validateEmail(x) { 
 
    console.log(x); 
 
    var email = x.myText.value; 
 
    console.log(email); 
 
    var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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,}))$/; 
 
    console.log(re.test(email)); 
 
}
<form name="myForm" onsubmit="return validateEmail(this)"> 
 
    <input name="myText" type="text"> 
 
    <input type="submit" value="Submit"> 
 
</form>

回答

3

你需要在验证失败时返回false,所以干脆

console.log(re.test(email)); 

return re.test(email); 

Demo

更换
+0

@goldpotatos它https://jsfiddle.net/gurvinder372/jmgo8ya2/ – gurvinder372

0

试试这个:

function validateEmail(x) { 
    console.log(x); 
    var email = x.myText.value; 
    console.log(email); 
    var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[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,}))$/; 
    return re.test(email); 
} 
0

变化<form name="myForm" onsubmit="return validateEmail(this)">

有了这个<form name="myForm" onClick="return validateEmail(this)">

和功能是这样

function validateEmail(x) { console.log(x); var email = x.myText.value; console.log(email); var re = your regular expression; if((re.test(email)){ document.getElementById(myForm).submit(); }