网络编程
位置:首页>> 网络编程>> JavaScript>> form的submit方法和submit事件(onsubmit)

form的submit方法和submit事件(onsubmit)

作者:大米 来源:口碑网ued 发布时间:2008-09-28 13:29:00 

标签:form,submit,提交,事件

一、问题描述

当用JS调用form的方法submit直接提交form的时候,submit事件不响应。为什么?知道的请回复。类比一下,我用input.select()做了测试,却能响应select事件。这个原因先放一边,我们看看先怎么把眼下的问题解决了。

不响应事件的代码示例:


<form id="form1" action="http://www.koubei.com"></form>

<script type="text/javascript">

 var form = document.getElementById('form1');

 form.onsubmit = function() {

     alert(1);

 };

 form.submit();

</script>

实际运行,不会有alert出来。

虽然用submit方法来提交表单有违Unobtrustive Javascript的原则,但有时候不得不用,比如做搜索提示(auto-complete)选中Item之后就需要用JS来提交搜索表单。

二、问题分析


既然本身不响应事件,那只有手工触发这些事件了,确定手工触发方案之前先回顾一下事件的注册方式:
“原始”的注册方式有两种,看代码示例:


<form id="form1" action="http://www.koubei.com" onsubmit="alert(1)"></form>
<form id="form1" action="http://www.koubei.com"></form>

<script type="text/javascript">

document.getElementById('form1').onsubmit = function() {

 alert(1);

}

</script>

这样的注册事件,会给form增加了一个方法onsubmit。所以,可以通过直接执行这个方法,等同于手工触发了事件。
看代码示例:

<script type="text/javascript">

 form.onsubmit();

</script>

这样可以得到一个alert。

但是在如今“先进”的DOM2标准注册方式以及IE的注册方式attachEvent已经很常用。这些注册方式,onsubmit方法是不存在的,如果使用form.onsubmit()会直接报错。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com