代码如下,但 onsubmit 不执行:
1 <script type="text/javascript">
2 function validate() {
3 if ($("#name").val().length == 0)
4 alert("姓名不能为空");
5 }
6 </script>
7 <form id="form1" action="#" onsubmit="validate()">
8 <label for="name">姓名</label>
9 <input id="name" type="text" />
10 </form>
11 <div>此处很多内容,可能包含其它表单</div>
12 <button onclick="$('#form1').submit()">提交</button>
请教解决办法,谢谢!
我补充意见,楼上说了直接放在onclick中进行解决,是的,二者保留其一,然后写该下html代码即可解决问题。然后我说为什么会这样。
解决一:代码如下
<script type="text/javascript">
function validate() {
if ($("#name").val().length == 0){alert("input is empty");return false;}
}
</script>
<form id="form1" action="#" onsubmit="return validate()">
<label for="name">姓名</label>
<input id="name" type="text" />
<input type="submit" value="提交">
</form>
<div>此处很多内容,可能包含其它表单</div>
解决二:代码如下
<script type="text/javascript">
function validate() {
if ($("#name").val().length == 0)
;
}
</script>
<form id="form1" action="#" >
<label for="name">姓名</label>
<input id="name" type="text" />
</form>
<div>此处很多内容,可能包含其它表单</div>
<button onclick="validate();">提交</button>
分析你代码的原因,你代码中在form中本身加入了一个onsubmit方法,而在下面又使用jQuery中来提交这个form表单,这就相当于这个form添加了两个onsubmit方法。而在一般情况中,对同一个标签使用两个方法会有方法覆盖,此时就会依据浏览器对事件处理的不同来显示不同的表象,这里不做细说。具体的可以私下交流...
去掉onsubmit="validate()",在button onclick里面加Validate,通过再submit
同意楼上的意见,直接放到onclick里就行了