在日常的开发中,往往在表单被提交之前需要加上验证(验证日期格式是否正确,验证某个input是否为空…),首先想到的就是 onsubmit事件,在一个submit类型按钮点击时,首先触发的就是form的onsubmit()事件。这时,我们就可以写上自己的验证。代码如下:

<form action="1.asp" method="post" name="form1"  onsubmit=“alert(‘执行了onsubmit事件’);return true;”>   
               <input type="submit" name="save" value="保存" />   
</form>

但是如果我们直接调用form的submit()事件,却不会执行onsubmit(),代码如下:

<form action="1.asp" method="post" name="form1"  onsubmit=“alert(‘执行了onsubmit事件’);return true;”>   ”>   
               <input type="button" name="save" value="保存" onclick=”this.form.submit();” />   
</form>

我们如果想调用form的onsubmit事件只能通过调用,只有这样,才能执行这个事件:

<form action="1.asp" method="post" name="form1"  onsubmit=“alert(‘执行了onsubmit事件’);return true;”>   ”>   
               <input type="button" name="save" value="保存" onclick=”this.form.onsubmit();” />   
</form>

但是这样就失去了submit功效。也许我们可以用(attachEvent() / addEventListener() )模拟触发器的方式实现,语法如下(下面部分是转载内容……):

分析了一下原因: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”提示。 

转载于:https://www.cnblogs.com/ForFreeDom/archive/2009/09/29/1576631.html

关于HTML中onSubmit属性的触发时机相关推荐

  1. Android中GC的触发时机和条件

    本文分析基于Android R(11)源码 Java对象的创建由Allocator负责,回收由Collector负责.从Android O开始,对于前台应用默认的GC Collector是CC(Con ...

  2. 说明所有BeanPostProcessor的触发时机

    说明所有BeanPostProcessor的触发时机 BeanPostProcessor BeanPostProcessor postProcessBeforeInitialization: [调用时 ...

  3. wap开发问题总结(ios中click事件无法触发、身份证分隔、倒计时、验证码分隔等)

    需求背景:用户在通过短信验证码方式注册或者登陆时,存在二次卡场景(运营商回收原机主不用的手机号,存放三个月后,再次开放给新机主),导致新机主可以登录原机主账号,如果原机主不换绑手机.二次卡判断条件:手 ...

  4. 关于表单form元素中onsubmit事件处理机制的认识

    博主目前处于Js学习的初期,遇到了很多问题,比如今天的关于表单form元素中onsubmit事件问题,根据教程所述,onsubmit事件是在表单提交的时候触发的,但是我看到教程上的onsubmit事件 ...

  5. python 中 property 属性的讲解及应用

    Python中property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回 property属性的有两种方式: 装饰器 即:在方法上应用装饰器 类属性 即:在类中定义 ...

  6. Python 中的属性访问与描述符

    在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言,点(. ...

  7. SpringCloud(第 017 篇)电影微服务接入Feign,添加 fallbackFactory 属性来触发请求进行容灾降级...

    2019独角兽企业重金招聘Python工程师标准>>> SpringCloud(第 017 篇)电影微服务接入Feign,添加 fallbackFactory 属性来触发请求进行容灾 ...

  8. 在运行时在Spring Cloud Config中刷新属性配置

    在本系列Spring Cloud Config的教程系列中,我们将讨论在运行时刷新属性配置的过程,我们将使用Spring Boot致动器/refresh端点进行/refresh . 此外,我们还将研究 ...

  9. [css] css中Scroll-behavior属性有什么应用场景?

    [css] css中Scroll-behavior属性有什么应用场景? 当用户手动点击导航或者API调用导致触发滚动操作时,scroll-behavior属性可以为滚动框设定滚动行为.auto表示立即 ...

  10. ios 通过kvc修改属性会触发kvo_iOS开发-KVC和KVO的理解

    KVC和KVO看起来很专业,其实用起来还是比较简单的,KVC(Key-value coding)可以理解为键值对编码,如果对象的基本类型,那么键值对编码实际上和get,set方法没有区别,如果是属性是 ...

最新文章

  1. 编译器设计-自下而上分析器-误差恢复-语义分析
  2. 零基础入门学习Python(1)
  3. 如何使用jQuery创建“请稍候,正在加载...”动画?
  4. 使用svnsync备份详解[转载+修改]
  5. 如何完成从科研人员到初创企业 CEO 的转型?
  6. python isinstance和issubclass区别
  7. HihoCoder - 1558
  8. mysql安装im,mysql安装记录
  9. 父子结构查询_Java面试准备(5)之数据结构与算法——红黑树
  10. Qt之线程同步(生产者消费者模式 - QSemaphore)
  11. android 系统(7)---android框架大全
  12. php截取字符串,无乱码
  13. oracle SQL查询
  14. 微信小程序云开发教程-微信小程序的JS基础-事件响应与视图层数据获取
  15. python泊松_python – 泊松过程的测试
  16. fiddler进行弱网测试
  17. 【系统分析师】操作系统
  18. 赶紧看看吧 Linksys路由器 出事了
  19. 每日一个CSS——模拟键盘
  20. scala中的match详解

热门文章

  1. 在阿里云容器服务中使用定时任务
  2. excel导入Mysql之间的转换
  3. String中的intern方法详解
  4. 有时,不做什么比做什么更重要,拒绝比答应更重要
  5. 【课本】【No.3】随机向量定义、联合分布函数、边缘分布、统计特征的分布函数的差分,独立性、离散型条件分布列,连续型分布函数与密度函数、随机向量的函数分布
  6. RFC792翻译(ICMP主要内容)
  7. 如何使用ssh工具便于远程管理
  8. C++--第15课 - 惊艳的继承
  9. Centos7:利用crontab定时执行任务
  10. Windows 10 超过Windows 7成为最受欢迎的操作系统