首页 新闻 赞助 找找看

如何在Form外提交表单,并能执行onsubmit事件

0
悬赏园豆:20 [已解决问题] 解决于 2010-03-01 12:11

代码如下,但 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>

 请教解决办法,谢谢!

问题补充: 有些onsubmit是动态添加上的,如ASP.net MVC的验证: http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx 如果验证不通过,就不提交。
鹤冲天的主页 鹤冲天 | 老鸟四级 | 园豆:2379
提问于:2010-03-01 11:18
< >
分享
最佳答案
0

我补充意见,楼上说了直接放在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方法。而在一般情况中,对同一个标签使用两个方法会有方法覆盖,此时就会依据浏览器对事件处理的不同来显示不同的表象,这里不做细说。具体的可以私下交流...

收获园豆:20
西越泽 | 专家六级 |园豆:10775 | 2010-03-01 11:48
有些验证是js动态添加上的,请教如何处理?
鹤冲天 | 园豆:2379 (老鸟四级) | 2010-03-01 12:01
@鹤冲天:这个需要依据实际的情况来处理,比如你上面的代码,假如现在不使用上面的方式进行验证或者提交,比如使用jQuery,里面就有相关的bind绑定事件来进行处理。这个你可以参看下jQuery的API手册。
西越泽 | 园豆:10775 (专家六级) | 2010-03-01 12:29
其他回答(2)
0

去掉onsubmit="validate()",在button onclick里面加Validate,通过再submit

Leox | 园豆:461 (菜鸟二级) | 2010-03-01 11:21
谢谢你的解答,但有些验证是通过脚本动态(如MicrosoftMvcValidation.js)添加上的
支持(0) 反对(0) 鹤冲天 | 园豆:2379 (老鸟四级) | 2010-03-01 11:59
0

同意楼上的意见,直接放到onclick里就行了

查尔斯 | 园豆:3832 (老鸟四级) | 2010-03-01 11:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册