onsubmit的执行函数必须是一个具有true或false返回值的函数,否则,验证也会被忽略
所以onsubmit的写法通常是onsubmit="return(function())",而不是onsubmit="function()"
http://letle.iteye.com/blog/82237 :
submit()和onsubmit()的区别
最近在开发中遇到了表单提交前验证的问题,用一个普通的button按钮代替submit按钮,
在提交前触发这个button的onclick事件,在其事件中触发form的submit事件。问题出现了:
以下是出现相关代码:
<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 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验证拦截 免去了用button按钮click点击事件ajax请求
IE6、IE7不支持在Javascript中调用form对象的onsubmit方法,本方法用于兼容IE6、IE7下对onsubmit方法的支持,各大浏览器均测试过。
这表明用户的配置或设置已经使得代码能够正确运行,但可能存在一些关于如何更好地利用MyEclipse进行代码验证的需求。 #### 关键知识点: 1. **代码保存与运行**:在IDE中编写代码后,通常需要先保存才能运行。...
第二:要说执行的先后顺序,个人理解是onSubmit在先,先验证,验证返回false时,则无法到达action=url地址。如果是返回true或者没有返回值是,则通过且转向url地址。 复制代码代码如下: <span xss=removed> ...
本文将详细讲解如何使用`onsubmit` 阻止表单提交以及与`onclick` 的相关操作。 1. **`return false` 的作用** 当在表单的`onsubmit`事件处理器中设置`return false`时,可以阻止表单的默认提交行为。这是因为...
return false 阻止表单提交不起今天这个问题困扰了我很久,在网上找了很多资料,基本上关于onsubmit=return false有以下几点要注意的地方: 1. return 的返回值问题,函数中return一旦有返回值,就不在执行下面的...
如果有OnSubmit会先执行这个函数,如果返回false则不提交表单! 复制代码代码如下: [removed] function test() { alert(“测试!”) } [removed] <form name=”F1″ onSubmit=”fuck();”> <input ...
代码如下:/** * 表单提交校验 **/function onSubmit(){ if($(‘#name’).val().length<2){ alert(“名称请不少于两个汉字”); return false; } var t = new Date().getTime(); $.ajax({ type: ...
表单元素拥有submit方法,同时也具有onsubmit事件句柄,用于监听表单提交。可以使用elemForm.submit();方法触发表单提交。1、表单元素中出现了name=”submit”的元素这种情况下elemForm.submit();将不会触发表单提交...
1. **输入事件监听**:使用InputField的`OnValueChange`或`OnSubmit`事件,可以监听用户的输入变化和提交行为。当用户在InputField中输入时,这些事件会被触发,从而更新游戏逻辑或存储输入的数据。 2. **IME...
React<AutoForm> <AutoForm> 组件,它简化了通过其onChange事件和表单的onSubmit事件从其包含的表单输入中获取数据的操作,可以选择修剪文本输入。安装npm install react-auto-formimport AutoForm from 'react-auto...
jquery密码强度正则表达式代码是一款jquery密码强度验证检测特效。
验证jsp提交
看起来您可能正在创建一个无尽的循环; 当您的验证脚本调用提交,然后调用验证,然后调用提交...。您应该使用类似以下的准代码:function validateit(){//如果经过验证,则执行验证工作{返回true;...
一、问题描述 当用JS调用form的方法submit直接提交form的时候,submit事件不响应。为什么?...类比一下,我用input.select()做了测试,却能响应select事件。这个原因先放一边,我们...form.onsubmit = function() {alert(1