为何用js验证表单无效后后依然跳转?
代码如下,在未填用户名或密码情况下会提示对话框,但依旧会跳转到后台php进行处理。<head><metahttp-equiv="Content-Type"content=...
代码如下,在未填用户名或密码情况下会提示对话框,但依旧会跳转到后台php进行处理。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>三国杀</title>
<link rel="stylesheet" href="index.css">
<script language="javascript">
function check_name()
{
if(index_div_log_form.user_name.value == "")
{
alert("请输入用户名!");
return false;
}
else if(index_div_log_form.user_password.value == "")
{
alert("请输入密码!");
return false;
}
else
{
confirm("确认提交?");
return true;
}
}
</script>
</head>
<body>
<form id="index_div_log_form" method="post" action="check_user.php" onSubmit="check_name()">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" id="user_name" name="user_name" ></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" id="user_password" name="user_password"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" id="yes" name="yes" value="确定" >
<input type="reset" id="reset" name="reset" value="重置">
</td>
</tr>
</table>
</form>
</body>
哈哈,问题解决了。
把 onSubmit="check_name()" 改成 onSubmit="return check_name();" 就可以了。照着网上改的。。。谁知到原理,给讲讲? 展开
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>三国杀</title>
<link rel="stylesheet" href="index.css">
<script language="javascript">
function check_name()
{
if(index_div_log_form.user_name.value == "")
{
alert("请输入用户名!");
return false;
}
else if(index_div_log_form.user_password.value == "")
{
alert("请输入密码!");
return false;
}
else
{
confirm("确认提交?");
return true;
}
}
</script>
</head>
<body>
<form id="index_div_log_form" method="post" action="check_user.php" onSubmit="check_name()">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" id="user_name" name="user_name" ></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" id="user_password" name="user_password"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" id="yes" name="yes" value="确定" >
<input type="reset" id="reset" name="reset" value="重置">
</td>
</tr>
</table>
</form>
</body>
哈哈,问题解决了。
把 onSubmit="check_name()" 改成 onSubmit="return check_name();" 就可以了。照着网上改的。。。谁知到原理,给讲讲? 展开
展开全部
onSubmit应该写成onsubmit,另外
confirm("确认提交?");
return true;
应该改成
return confirm('确认提交');
为什么onsubmit="return check_name()",不好解释,你就记住return false可以阻止事件发生就行了,不论是onsubmit还是onclick(例如<a href='...' onclick="return false">这样就无法跳转了)。对于onsubmit我推荐的代码是onsubmit="try{return check_name();}catch(e){alert(e.message);return false;}"
confirm("确认提交?");
return true;
应该改成
return confirm('确认提交');
为什么onsubmit="return check_name()",不好解释,你就记住return false可以阻止事件发生就行了,不论是onsubmit还是onclick(例如<a href='...' onclick="return false">这样就无法跳转了)。对于onsubmit我推荐的代码是onsubmit="try{return check_name();}catch(e){alert(e.message);return false;}"
展开全部
验证js写得有问题。对于验证 你首先得先禁用提交按钮 使之对用户点击无效 只要当验证全部通过了 才用js把提交按钮用过js设置成用户可用 而验证失败跳转可能就是执行了浏览器默认动作, 你可以通过 return false 来阻止 或者通过 stopPropagation
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
form表单有默认的行为,return false可以终止这种默认行为,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把check_name()写在确定按钮的onclick里面试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询