最近在项目中碰到这样一个问题,表单提交,是用javascript控制的,当用户回车时就代表提交,同事在网上搜了一段代码放进去,在IE下是正常的,但我在用FF查看时,发现提交无效,用Firebug跟踪得到的结果是:  window.event has no properties

程序代码

function document.onkeydown(){
var source=event.srcElement.id;
var btnid;
if (event.keyCode == 13 ){
   if (source=="txtEmpCode"){
      btnid="btnQry"
      var btn = document.getElementById(btnid);
      if (btn != event.srcElement){
           btn.click();
         return false;}
    }else {
         return  false;
         }
   }
}

从获取事件的源对象及ID属性,然后到提交按钮的click事件,看上去是没有问题(项目中用的全是struts标签),但确忽略了FireFox中event与IE中的异同,IE下,event对象有srcElement属性,但是没有target属性;Firefox下,event对象有target属性,但是没有srcElement属性.但他们的作用是相当的;网上有资料说可以写成: var eventSource =window.event.srcElement||eventTag.target; 就解决了,但实际上是不行的,FF下既然不能识别window.event,又哪来的window.event.srcElement呢?所以会出现错误:  window.event has no properties;

程序代码

function enter_another(eventTag)
    {
                var events = eventTag||window.event;
    var eventSource;
       var currentKey = events.charCode||events.keyCode;
    if(document.all)    
           eventSource =window.event.srcElement; 
    else
        eventSource = events.target;        
    if( currentKey == 13 )
        alert("您按了回车键,输入的内容为"+eventSource.value);
    }

或直接写成

程序代码

function enter_another(events)
    {
          var eventSource;
           var currentKey = events.charCode||events.keyCode;
        if(document.all)    
                eventSource =window.event.srcElement; 
        else
                eventSource = events.target;        
        if( currentKey == 13 )
        alert("您按了回车键,输入的内容为"+eventSource.value);
    }

html代码引用:

程序代码

<input type="text" name="pwd" οnkeydοwn="enter_another(event)" />

修正代码:

程序代码

function enter_down(events){
var eventSource;
var currentKey=events.charCode||events.keyCode;
if(document.all)
       eventSource =window.event.srcElement; 
else
       eventSource = events.target;
var source=eventSource.id;
var btnid;
     if (currentKey == 13 ){
      if (source=="txtEmpCode"){ 
         btnid="btnQry";
         var btn = document.getElementById(btnid);
         if (btn != eventSource){
             document.getElementById("logform").submit();
           return false;}
    }else {
         return  false;
         }
   }
}

如果var currentKey=events.charCode||events.keyCode;按浏览器分开写的话,会导致得到的currentKey值永远为0;

程序代码

<html:password property="user.passwd"  size="15" styleId="txtEmpCode" οnkeydοwn="enter_down(event)"   styleClass="login_input" tabindex="2"/>

IE和FireFox中的event事件相关推荐

  1. javascript中window.event事件用法详解

    前两天写程序时因为要用到javascript中的window.event事件,于是就在网上搜了一下,终于找到一篇不错的文章,来与大家分享下:  描述   event代表事件的状态,例如触发event对 ...

  2. event类型 php,深入解析PHP的Laravel框架中的event事件操作

    有时候当我们单纯的看 Laravel 手册的时候会有一些疑惑,比如说系统服务下的授权和事件,这些功能服务的应用场景是什么,其实如果没有经历过一定的开发经验有这些疑惑是很正常的事情,但是当我们在工作中多 ...

  3. JS中window.event事件使用详解

    一.描述 event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如:from ...

  4. Laravel框架中的event事件操作

    有时候当我们单纯的看 Laravel 手册的时候会有一些疑惑,比如说系统服务下的授权和事件,这些功能服务的应用场景是什么,其实如果没有经历过一定的开发经验有这些疑惑是很正常的事情,但是当我们在工作中多 ...

  5. JS中的event 对象详解

    JS中的event 对象详解 JS的event对象 Event属性和方法: 1. type:事件的类型,如onlick中的click: 2. srcElement/target:事件源,就是发生事件的 ...

  6. 自定event事件之手动触发(一)

    创建组件:Y_GLOBAL_EVENT 视图:V_MAIN 窗口:W_MAIN Application:Y_GLOBAL_EVENT 添加上下文 添加UI控件button和textview       ...

  7. vue中 点击事件的写法_vue中的事件:原生事件与自定义事件__Vue.js

    模板编译 processAttrs 对于ast attributes处理(v-on/@) 利用onRE与dirRE来捕获事件 这里最重要的就是dynamic的判断,vue中可以用动态参数来命名事件名称 ...

  8. 为什么JS是单线程?JS中的Event Loop(事件循环)?JS如何实现异步?setimeout?

    https://segmentfault.com/a/1190000012806637 https://www.jianshu.com/p/93d756db8c81 首先,请牢记2点: (1) JS是 ...

  9. node.js中对Event Loop事件循环的理解

    javascript是单线程的,所以任务的执行都需要排队,任务分为两种,一种是同步任务,一种是异步任务. 同步任务是进入主线程上排队执行的任务,上一个任务执行完了,下一个任务才会执行. 异步任务是不进 ...

最新文章

  1. ReactNative v0.55学习笔记
  2. 微服务SpringCloud—Config Server对称加密
  3. Linux下TCP最大连接数受限问题
  4. 一种加速WiFi模块一键配网速度的实现
  5. 目标跟踪:CamShift算法
  6. c++开发教程之自定义类型的运算
  7. 将Doc或者Docx文档处理成html的代码逻辑;统计word中的字数,段数,句数,读取word中文档内容的代码逻辑
  8. 树莓派python编程读取电压_《树莓派Python编程指南》——3.2 在结构体中存储值-阿里云开发者社区...
  9. uniapp 开发基础环境搭建和配置
  10. C语言课程设计题库及答案,C语言课程设计题目.docx
  11. 讲解如何进行SNMP MIB的查看
  12. Altium designer--DB接口DB9/DB15/DB25/DB37/DB50
  13. JAVA中使用Apache Batik实现SVG文件转PDF文件导出
  14. 什么是软件项目管理?
  15. [情感] 纯情女生给老实木讷男孩的恋爱建议
  16. 外部多端口映射Https443端口配置
  17. WIN10下配置Yolov3(VS2019,GPU)+opencv训练自己的数据集(绝对详细,小白型记录)
  18. 微信公众号怎么清缓存
  19. Android事件总线设计(一)- EventBus初步学习
  20. Centos下netstat的使用

热门文章

  1. 数列分块入门 5(LibreOj-6281)
  2. B君的圆锥(51Nod-1629)
  3. 宇宙总统(洛谷-P1781)
  4. 13 CO配置-控制-内部订单-定义定单类型
  5. opencv学习笔记3
  6. Ubuntu16.04+cuda10.0+cudnn7.6配置tensorflow1.x环境
  7. 语音技术(百度语音)开发 - 第一篇
  8. canvas游戏篇 - 贪吃蛇
  9. vue-router配置介绍和使用方法(二)
  10. PHP短网址链接在线生成源码 带后台