我的目的:如果用户字段和密码字段为空,我想停止表单提交。 这是我正在尝试的代码:
<!DOCTYPE html>
<html>
<head>
<script>
function doit() {
var usr = document.getElementById('ur').value;
var psw = document.getElementById('pw').value;
if ((usr.trim() == '') && (psw.trim() == '')) {
alert("cannot Submit form");
return false;
}
}
</script>
</head>
<body>
<form action="post.php" method="post" onsubmit="doit()">
User:
<input type="text" id="ur" name="user">
<br>
<br> Pass:
<input type="password" id="pw" name="pass">
<br>
<br>
<button>Submit</button>
</form>
</body>
</html>
我正在学习JavaScript。如果你纠正代码并稍微解释为什么它不起作用将会有所帮助。
答案 0 :(得分:48)
return false
工作正常,您 调用 的方式是错误的。
<form action="post.php" method="post" onsubmit="doit()">
只需调用它,不会对返回值
执行任何操作<form action="post.php" method="post" onsubmit="return doit()">
^
将以错误的返回值停止表单发布。
请阅读 MSDN 上的这条说明,尽管它不是特定于IE的
您可以通过在事件处理程序中返回false来覆盖此事件。使用此功能验证客户端上的数据,以防止将无效数据提交到服务器。 如果事件处理程序由表单对象的onsubmit属性调用,则代码必须使用return函数显式请求返回值,并且事件处理程序必须为事件处理程序中的每个可能的代码路径提供显式返回值功能强>
现在转到另一个重点。
当两个字段都为空时,您的if
条件只会停止表单提交,而即使这两个字段中的任何一个为空,它也应该这样做。那个&&
(AND)应该是||
(OR),如果没有返回false,则在函数的末尾,return true
然后。{/ p>
答案 1 :(得分:8)
onsubmit="doit()">
事件接受布尔值,因为您没有返回任何内容,因此默认情况下它为true。您需要在此活动中添加回报。
变化
onsubmit="return doit()">
到
codselect.CommandText = "select* from team where nome Like '" + TextBox2.Text + "%'"
答案 2 :(得分:0)
使用preventDefault()
在提交时使用addEventListener
document.form1.addEventListener("submit", function(event) {
var usr = document.getElementById('ur').value;
var psw = document.getElementById('pw').value;
if ((usr.trim() == '') || (psw.trim() == '')) {
alert("cannot Submit form");
event.preventDefault();
} else {
alert("submit");
}
});
<form action="" method="post" name="form1">
User: <input type="text" id="ur" name="user"><br><br>
Pass: <input type="password" id="pw" name="pass"><br><br>
<input type="submit" value="Submit" />
</form>