我有两个单独的JS方法来验证电子邮件和密码。我的问题是,当我在提交html表单时返回两个方法时,即使验证失败,表单也会通过,但是当我只返回一个方法时,它的工作方式绝对正常!
<form method="POST" action="http://127.0.0.1:3000/" enctype="multipart/form-data" name="form" onsubmit="return validateEmail(), checkPassword();">
<div class="reservation">
<div class="section_room">
<h5>Enterprise ID: </h5>
<input name="enterpriseID" type="text" name="uName" id="uName" placeholder="[email protected]" class="textbox" required>
</div>
<div class="section_room">
<h5>Password: </h5>
<input name="password" type="password" name="PassWd" id="passWd" placeholder="Password1!" class="textbox" required>
</div>
<input type="submit" value="Login" style="width: 280px;">
<div class="clear"></div>
</ul>
</div>
</form>
和我的JS是:
</script>
function validateEmail(){
var email = document.getElementById('uName');
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(email.value))
{
alert('Please provide a valid email address');
email.focus;
return false;
}
else
return true;
}
function checkPassword()
{
var pass = document.getElementById('passWd');
var re = /^(?=(.*\d){1})(?=.*[a-zA-Z])(?=.*[!@#$%^&*])[0-9a-zA-Z!@#$%]{8,}/;
if (!re.test(pass.value))
{
alert('Your Password does not meet the minimun requirements');
email.focus;
return false;
}
else
return true;
}
</script>
我哪里错了,或者这甚至可能?
使用onsubmit
更改您的logical AND (&&
)以检查这两个值:
当与布尔值一起使用时,如果两个操作数都为真,则
&&
返回true;否则,返回false。
onsubmit="return validateEmail() && checkPassword();"
现在如果validateEmail
和checkPassword
都是真的,这将返回true。但是,如果其中任何一个为假,它将返回false。
添加一些逻辑:
function b(){return true&&false;} //false
function b(){return true||false;} //true
你需要:
onsubmit="return validateEmail()&&checkPassword();"