今天写用户登陆页面的时候,遇到了一个问题,就是要当对账户或密码进行非空验证,非空是可以检验出来,但是同时表单也提交了,送给了后台一个空表单,原来的代码是这样的
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="doLogin" method="post" id="loginForm">
姓名:<input type="text" name="username" id="username">
密码:<input type="text" name="pwd" id="pwd">
<button id="submitbut">提交</button>
</form>
</body>
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$("#submitbut").click(function(){
var name = $.trim($("#username").val());
var pwd = $.trim($("#pwd").val());
if(name == ""){
alert("姓名不能为空");
return;
}
if(pwd == ""){
alert("密码不能为空")
return;
}
$("#loginForm").submit();
});
</script>
</html>
即使不填任何内容,表单也会被提交,后来把button按键换成了用div做的高仿按键或其他,都是正常的,于是就确定了问题的所在,后来查API看到button的属性:
发现button的type默认是submit,而我们在上面又没有对button的type设置,所以每次点击都会提交。
解决办法:在button里加type=“button” 即可解决
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="doLogin" method="post" id="loginForm">
姓名:<input type="text" name="username" id="username">
密码:<input type="text" name="pwd" id="pwd">
<button type="button" id="submitbut">提交</button>
</form>
</body>
<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
<script type="text/javascript">
$("#submitbut").click(function(){
var name = $.trim($("#username").val());
var pwd = $.trim($("#pwd").val());
if(name == ""){
alert("姓名不能为空");
return;
}
if(pwd == ""){
alert("密码不能为空")
return;
}
$("#loginForm").submit();
});
</script>
</html>