在提交html表单上返回多个方法

时间:2014-05-29 09:43:58

标签: javascript html5 forms

我有两个独立的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="me@me.com" 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>

我哪里错了,或者这甚至可能?

2 个答案:

答案 0 :(得分:4)

使用logical AND (&&)更改onsubmit以检查这两个值:

  

当与布尔值一起使用时,如果两个操作数都为真,则&&返回true;否则,返回false。

onsubmit="return validateEmail() && checkPassword();"

现在,如果validateEmail checkPassword都为真,则返回true。但是,如果其中任何一个为假,它将返回false。

答案 1 :(得分:2)

添加一些逻辑:

function b(){return true&&false;} //false

function b(){return true||false;} //true

您需要:

onsubmit="return validateEmail()&&checkPassword();"