`

submit()和onsubmit()的区别

 
阅读更多
最近在开发中遇到了表单提交前验证的问题,用一个普通的button按钮代替submit按钮,
在提交前触发这个button的onclick事件,在其事件中触发form的submit事件。问题出现了:
以下是出现相关代码:
Java代码 复制代码
  1. <formaction= "http://www.baidu.com/s?wd=this.form.submit%28%29%3B&cl=3" method= "post" name= "form1" onsubmit= "returnalert('已提交!');returnfalse;" >
  2. <tablealign= "center" width= "420px" cellPadding= "2" cellSpacing= "1" bgcolor= "#A4B6D7" style= "word-wrap:Break-word;" >
  3. <trstyle= "cursor:hand;background:#d7e3f6" >
  4. <tdwidth= "20%" align= "right" >条型码</td>
  5. <td><inputstyle= "width:90%" type= "text" name= "GOODSNUM" size= "30" maxlength= "8" ></td>
  6. </tr>
  7. <tr>
  8. <tdalign= "center" colspan= "2" >
  9. <inputtype= "button" name= "save" value= "保存" onclick= "if((confirm('确定要提交吗?')))this.form.submit();" />
  10. </td>
  11. </tr>
  12. </table>
  13. </form>
<form action="http://www.baidu.com/s?wd=this.form.submit%28%29%3B&cl=3" method="post" name="form1" onsubmit="return alert('已提交!'); return false;">
	<table align="center" width="420px" cellPadding="2" cellSpacing="1" bgcolor="#A4B6D7"	style="word-wrap:Break-word;">				
		<tr style="cursor: hand;background:#d7e3f6" >
			<td width="20%" align="right">条型码</td>
			<td><input style="width:90%" type="text" name="GOODSNUM"   size="30"  maxlength="8" ></td>
		</tr>
		<tr>
			<td align="center" colspan="2">
				<input type="button" name="save" value="保存" onclick="if((confirm('确定要提交吗?'))) this.form.submit();"/>
			</td>
		</tr>	
	</table>
</form>

却发现并没有触发form的onsubmit方法,而是直接提交了。奇怪了,难道没有这种方式无法结合form的onsubmit方法吗?
仔细想了想,既然this.form表示form这个对象,那么肯定能获取到form的属性和方法的
,就改成this.form.onsubmit(); 成功!
我又查了查手册,原来submit的方法是这样解释的:
The submit method does not invoke the onsubmit event handler. Call the onsubmit event handler directly. When using Microsoft® Internet Explorer 5.5 and later, you can call the fireEvent method with a value of onsubmit in the sEvent parameter.

意思是说submit这个方法是不触发onsubmit事件的,如果想要触发它,需要调用
fireEvent方法。尝试一下:this.form.fireEvent('onsubmit');哈哈,果然也成功!不过这样不是多此一举吗?呵呵!

就这个小问题也搞了我将近一个小时,不过为了以后不为这个问题烦恼,这也是值得的。
this.form.submit(); //直接提交表单
this.form.onsubmit(); //调用form的onsubmit方法
this.form.fireEvent('onsubmit'); //同上,
PS:又学到了fireEvent这个方法

 

分享到:
评论

相关推荐

    submit表单提交,onsubmit验证拦截

    submit表单提交,onsubmit验证拦截 免去了用button按钮click点击事件ajax请求

    表单元素的submit()方法和onsubmit事件应用概述

    表单元素拥有submit方法,同时也具有onsubmit事件句柄,用于监听表单提交。可以使用elemForm.submit();方法触发表单提交。1、表单元素中出现了name=”submit”的元素这种情况下elemForm.submit();将不会触发表单提交...

    JS定义网页表单提交(submit)的方法

    本文实例讲述了JS定义网页表单提交(submit)的方法。分享给大家供大家参考。具体如下: 这段代码表示网页表单提交时不是提交到指定的页面,而是执行一个特定的函数 [removed] function saveInfo() { localStorage...

    Form表单的action和onSubmit示例介绍

    input type=submit /&gt;提交时进行一个函数验证。。 第二:要说执行的先后顺序,个人理解是onSubmit在先,先验证,验证返回false时,则无法到达action=url地址。如果是返回true或者没有返回值是,则通过且转向url...

    两个SUBMIT按钮,如何区分处理

    一个FORM表单中有两个SUBMIT按钮(例如“修改”“删除”),只有一个ACTION处理页面 在此ACTION页面中如何区分是处理“修改”呢还是处理“删除”? 方法1: 假如FORM表单是这样的: &lt;INPUT Type=”Submit” ...

    表单Form的submit事件不响应

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

    浅析onsubmit校验表单时利用ajax的return false无效问题

    代码如下:/** * 表单提交校验 **/function onSubmit(){ if($(‘#name’).val().length&lt;2){ alert&#40;“名称请不少于两个汉字”&#41;; return false; } var t = new Date().getTime(); $.ajax({ type: ...

    JQuery与JS里submit()的区别示例介绍

    ASP.NET 的服务器控件回发是使用这一段JS代码: 代码如下: var theForm = ...theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value

    在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码

    form onsubmit=”aa(this);”&gt; &lt;input type=”text” name=”” value=”test” /&gt;&lt;input type=”submit” value=”提交” /&gt; &lt;/form&gt; &lt;iframe src=”” name=”fA” ...

    JS获得多个同name 的input输入框的值的实现方法

    form id=login-form method=post onsubmit=return checkForm()&gt; 输入密码&lt;input type=password id=input-password&gt; &lt;input type=hidden id=md5-password name=password&gt; &lt;button type=submit&...

    kotest:轻松测试 Knockout 3.2 组件和自定义绑定处理程序

    测试 轻松测试 Knockout 3.2 组件和自定义绑定处理程序。 依赖关系 该库支持通过 AMD 加载或作为全局对象加载,但 mocha 始终需要在全局范围内加载。... submit = function ( ) { this . onSubmit

    jsp有关表单的操作

    &lt;form method=post action="http://baidu.com/do.jsp" target="_blank" onsubmit="doMethod();return false;"&gt; 是"&gt;你接受吗 你是党员吗 &lt;input type=submit &gt; function doMethod(){ if(document.forms[0]....

    JS表单提交验证、input(type=number) 去三角 刷新验证码

    在进行表单提交时,需要对输入框和文本域等的value的合理性进行验证,可以编写form的onSubmit事件,代码,踩过的坑;注意点: 1、只有通过form里面的 &lt;button type="submit" &gt;提交&lt;/button&gt;进行表单的...

    Button未设type属性时在非IE6/7中具有submit特性并自动提交form

    Button在Form中具有submit的特性&lt;/title&gt; &lt;meta charset=”utf-8″&gt; &lt;/head&gt; &lt;body&gt; &lt;form onsubmit=”alert&#40;3&#41;”&gt; &lt;input name=”uname”/&gt; &lt;button onclick=”...

    JavaScript阻止表单提交方法(附代码)

    input type="submit" id="submit" name="submit"&gt; &lt;/form&gt; &lt;/body&gt; &lt;/html&gt; html页面。  第一种方法:利用event的阻止默认事件机制,页面载入之后获得submit元素,然后为submit注册click响应...

    jsp表单验证汇总

    }}&lt;/script&gt;&lt;form name=a onsubmit="return test()"&gt;&lt;textarea name="b" cols="40" wrap="VIRTUAL" rows="6"&gt;&lt;/textarea&gt;&lt;input type="submit" name="Submit" value="check"&gt;&lt;/form&gt; 2. 只能是汉字 (/[^\u4E00-\u9FA...

    javascript 键盘事件总结 推荐

    不过在IE6,safari4,ff3.5,opera10,chrome中,按Enter,不但激发form的submit事件,同时也会激发提交按钮的onclick,激发顺序为提交按钮的 onclick → form 的 onsubmit。 键盘事件 键盘事件 [Ctrl+A 全选 ...

    JSP表单处理(有图解)

    onreset 属性和 onsubmit 属性设定了在按下 reset 按钮和 submit 按钮之后要执行的子程序。 标记用于输入各种类型的数据,包括文本、密码、复选框、单选框、提交按钮、清除按钮、文件、隐藏按钮和图片按钮等。其中...

    阻止表单提交按钮多次提交的完美解决方法

    如果表单是通过onsubmit进行Ajax提交,注意将表单提交按钮input type属性设为button,尽量不要设置为submit类型。 另外,在提交事件发出后,最好将提交按钮设置为disabled,防止由于网络延时问题,让用户有机会进行...

Global site tag (gtag.js) - Google Analytics