这是我的javascript代码,用于检查用户是否输入了用户名和密码字段的值。当我运行它时,它会向我显示正确的警报消息,但即使表单返回false,表单也似乎已提交。有人可以帮助我吗?
<script type="text/javascript">
function loginValidate(){
if (document.getElementById("username").value==''){
window.alert("Please enter your username");
if (document.getElementById("password").value==''){
window.alert("Please enter your username and password");
return false;
}
}
if (document.getElementById("password").value==''){
window.alert("Please enter your password");
return false;
}
return true;
}
</script>
<form onsubmit="loginValidate()">
<input type="submit" name="submit" id="submit" value="Login" />
</form
答案 0 :(得分:2)
您需要将函数返回的值返回给处理程序:
<form onsubmit="return loginValidate()">
此外,不要给任何表单控件提供&#34;提交&#34;的名称或ID。因为它将控件的引用分配给表单的 submit 属性,从而屏蔽表单的 submit 方法(即form.submit
个引用控件,因此form.submit()
将失败。)
很少需要提交按钮来获取姓名或ID,所以:
<input type="submit" value="Login">
您也可以稍微清理一下逻辑。如果将对表单的引用传递给函数,则更容易获取控件:
<script>
function loginValidate(form){
if (form.username.value == ''){
window.alert("Please enter your username");
return false;
}
if (form.password.value == ''){
window.alert("Please enter your password");
return false;
}
return true;
}
</script>
<form onsubmit="return loginValidate(this)">
<table>
<tr><td>Username: <td><input type="text" name="username">
<tr><td>Password: <td><input type="password" name="password">
<tr><td colspan="2" style="text-align: right;><input type="submit" value="Login">
</table>
</form
请注意,这会以明文形式发送密码,因此不是特别安全。