IE和FireFox中的event事件

最近在项目中碰到这样一个问题,表单提交,是用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"/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值