随笔-193  评论-715  文章-1  trackbacks-0
本Blog所有内容不得随意转载,版权属于作者所有。如需转载请与作者联系( fastzch@163.com )。
未经许可的转载,本人保留一切法律权益。
一直以来,发现有某些人完全不尊重我的劳动成果,随意转载,提醒一下那些人小心哪天惹上官司。


今天同事一大早问我一个他觉得比较奇怪的问题:form的onsubmit属性中的方法在提交时为什么没反应?经过了解发现状况如下:
他写的页面中form有onsubmit属性,并指定了一个javascript函数,期望form在提交前执行这个函数,以处理一些检查等动作,但form的提交并不是像我们通常使用的input:submit这样的button去做的,而是用一个普通input:button,在onclick属性中指定了一个javascript函数,在这个函数里面再执行form的submit()函数。
示意代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
    
<script language="javascript">
        
function t(){
            
var f=document.getElementById("f");
            f.submit();
            alert('
333');
        }

    
</script>
</HEAD>
    
<BODY>
<form id="f" onsubmit="alert('2222');">
    
<input type="button" value="button" onclick="t();"/>
</form>
</BODY>
</HTML>
此时,页面弹出了“333”的提示,但没有弹出“2222”的提示。

分析了一下原因:onsubmit属性的触发时机是在form用input:submit这样的button提交时才会触发,否则不会触发。
后来,在官方文档上也找到了如下说明,证明了我的这一分析,如下:
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.

为了证实这一分析,我做了一个完整的测试:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
    
<script language="javascript">
        
function t(){
            
var f=document.getElementById("f");
            f.submit();
            alert('
333');
        }

    
</script>
</HEAD>
    
<BODY>
<form id="f" onsubmit="alert('2222');">
    
<input type="submit" value="submit" /> 
    
<input type="button" value="button" onclick="t();"/>
</form>
</BODY>
</HTML>
点击submit按钮即可出现“2222”提示,点击button的话,会出现“333”提示。
posted on 2008-10-24 11:33 Robin's Programming World 阅读(5510) 评论(14)  编辑  收藏 所属分类: 其它

评论:
# re: 关于HTML中onSubmit属性的触发时机 2008-10-24 20:58 | 007
sb....  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机[未登录] 2008-10-24 21:03 | ssh
你前面那短话,真让人恶心,几篇破文章就这,谦虚一点好吧。能看你的文章是看的起你,不行了就洗洗睡觉。  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机 2008-10-25 11:35 | akuli
看到你第一段话,以为有多高深的东西,结果让人非常失望!!!
别人觉得你的文章好才会转载,既然你不想让人转载就不要放到网上来!!!  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机[未登录] 2008-10-25 18:43 | hi
情况确实如此,要解决这个问题可以模拟submit事件。
在Brocade脚本库里有实现,调用Form.submit(form)方法。
http://brocade.sf.net  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机 2008-10-25 19:12 | CowNew开源团队
“能看你的文章是看的起你”
流氓,暴民  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机 2008-10-25 21:36 | Robin's Java World
@CowNew开源团队
像这种人最有效的办法就是不理他,对没素质的人不理会。  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机 2008-10-25 21:36 | Robin's Java World
@hi
Brocade是个不错的东东,谢谢推荐!  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机 2008-10-27 11:32 | temper
@ssh
这也太无耻了吧?我真怀疑哪个公司敢用有这种思想的人。  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机[未登录] 2009-03-23 11:29 |
@akuli
支持!
博主请三思!  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机[未登录] 2009-08-16 17:30 | 哈哈
真恶心,我还以为喽猪有什么高见,一看原来是当宝贝的垃圾!!  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机 2009-09-07 12:43 | niba
真恶心,我还以为喽猪有什么高见,一看原来是当宝贝的垃圾!!  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机 2011-08-01 19:07 | tt
艹 ,怎么没说怎么解决的方法  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机 2012-08-18 22:34 | zzz
说的挺好。。  回复  更多评论
  
# re: 关于HTML中onSubmit属性的触发时机[未登录] 2013-02-06 12:21 | aa
说了半天, 还不是没解决问题么? 以为您有多牛逼。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: