[英]Why does this form submit on click of the submit button
<script type="text/javascript">
var geid = function(x) {
var element = document.getElementById(x);
return element;
}
function submitForm(){
var password = geid('password').value;
var passwordConfirm = geid('passwordConfirm');
//THIS IS OF HIGH IMPORTANCE THAT THIS CONFIRM PASSWORD MATCHES
//WILL NEED TO VALIDATE IT IN THE PHP AS WELL>
else if (password == ""){
registerMessage.innerHTML = "Please enter your Password.";
return false;
}
else if (passwordConfirm == "") {
registerMessage.innerHTML = "Please confirm your password.";
return false;
}
else if (passwordConfirm != password) {
registerMessage.innerHTML = "Your passwords don't match.";
return false;
}
else {
registerMessage.innerHTML = "Taking you to your profile, please wait a moment...";
document.forms['registerform'].submit();
}
}
<form method="post" action="register.php" id="registerform" onsubmit="return submitForm()">
<label for="password" class="registerLabel">Password</label>
<input type="password" name="password" id="password" class="registerText" /> <br />
<label for="passwordConfirm" class="registerLabel">Confirm Password</label>
<input type="password" name="passwordConfirm" id="passwordConfirm" class="registerText" /> <br />
<div class="submitMessage">
<input type="submit" id="submit" name="submit" value="Register" class="registerButton cleangray" /><br />
<div id="registerMessage"><?php echo $error ?></div>
</div>
<div class="clear"></div>
</form>
如果不能從else if
開始; 你需要開始if
if (password == ""){
registerMessage.innerHTML = "Please enter your Password.";
return false;
}
這樣可以防止您的任何驗證代碼運行,而只能使用標准的提交機制提交表單。
這也不是進行驗證的最佳方法。 您可以建立一串消息並一次性報告所有錯誤,而不是每次出錯都返回。 這樣,用戶就可以知道所有錯誤,您的當前方法將只設置一條消息。
因為您在JavaScript中有錯誤,所以else if
沒有先定義if
就使用else if
。 由於該錯誤,所有JavaScript代碼都會失敗。
更改
else if (password == ""){
至
if (password == ""){
工作演示http://jsfiddle.net/Zs3km/
BTW在代碼HTML中位於<script>
標記內,不確定是否是您的錯誤。 您必須在打開<form>
標記之前關閉<script>
標記。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.