下面是按回车键就换另一处焦点。
如题下面这段代码在FF下用会报错:window.event is undefined
<script type="text/javascript">
document.onkeydown=keyListener; 
function keyListener(){ 
   // if(event.keyCode==13) 
    //event.keyCode=9; 
if (window.event.keyCode == 13 &&  window.event.srcElement.type!='image') {   
        window.event.keyCode = 9;   
        }   
    if(window.event.keyCode == 13 && window.event.srcElement.type=='image'){   
         document.showLogin.submit();
 }
  }
如何修改呢?

解决方案 »

  1.   

    document.onkeydown=keyListener; 
    function keyListener()

        var evt = window.event || arguments.callee.caller.arguments[0]; 
        var src = evt.srcElement || evt.target; 
       var currentKey = evt.charCode||evt.keyCode; 
        if (currentKey == 13 && src.type!='image') 
        {  
            currentKey = 9;  
        }  
        if(currentKey == 13 && src.type=='image')
        {  
            document.showLogin.submit();
        }
    }
      

  2.   

    L@_@K
    document.onkeydown=keyListener;function keyListener(e){
        var event = e||window.event;    if (event.keyCode == 13 && event.srcElement.type!='image') {   
          event.keyCode = 9;   
        }   
        if(event.keyCode == 13 && event.srcElement.type=='image'){   
          document.showLogin.submit();
        }
    }
      

  3.   

    1楼有报错:arguments.callee.caller is null
    2楼也有报错:event.srcElement is undefined我只在FF下试了一下。大家还有别的放法没有?
      

  4.   


      document.onkeydown=keyListener;function keyListener(e){
        var event = e||window.event;
        var src = event.srcElement || event.target;
        if (event.keyCode == 13 && src.type!='image') {   
          event.keyCode = 9;   
        }   
        if(event.keyCode == 13 && src.type=='image'){   
          document.showLogin.submit();
        }
    }
      

  5.   


    在FF下有如下报错:
    setting a property that has only a getter
    event.keyCode = 9;
    还有没有正确的方法呢?就这么难吗?
      

  6.   


    setting a property that has only a getter
    这话不是已经说,FF下是不能修改,只能读取。
    浏览器之间还是有些差异的。
      

  7.   

    document.onkeydown=keyListener; 
    function keyListener(e){ 
    e = e||window.event;
    var dom = e.srcElement || e.target;
    if (e.keyCode == 13 && dom.type!='image') {   
    }   
    if(e.keyCode == 13 && dom.type=='image'){  
    document.showLogin.submit();
    }
    }至于你那个e.keyCode = 9是想跳到下一个元素去吧。如果是我给你加上这个功能
      

  8.   

    window.onload = function() {
    document.getElementById("test").focus();
    document.onkeydown=keyListener; 
    function keyListener(e){ 
    e = e||window.event;
    var dom = e.srcElement || e.target;
    if (e.keyCode == 13 && dom.type!='image') {   
    while(dom.nextSibling.nodeType!=1) {
    dom = dom.nextSibling;
    }
    dom.nextSibling.focus();
    }   
    if(e.keyCode == 13 && dom.type=='image'){  
    document.showLogin.submit();
    }
    }
    }
      

  9.   

    版主,你8楼的代码在FF下和IE 下都报错,FF下是:dom.nextSibling is null,
    在IE 下这句   while(dom.nextSibling.nodeType!=1) {
    缺少对象。
      

  10.   

     你把你的form发给我看看好嘛
      

  11.   

    好的,如下:
    <form name="showLogin"  onsubmit='return verify();return false;' >
      <p> Submit Your Username &Password</p>
    <p>Username <input name="username"type="text" size="20"id="username"></p> 
    <p>Password <input name="password" type="password" size="21"id="password"></p>
     <p><input type="image" name="submit" id="submit" style="position:absolute; float:left; left: 88px; top: 192px;" src="images/enter.gif" onClick="verify();return false;"  >
     </p>
    </form>
    我的JS代码中下面有段用AJAX验证姓名和密码的代码。
      

  12.   

    刚才开回去了
            window.onload = function() {
                document.getElementById("username").focus();
                document.onkeydown=keyListener; 
                function keyListener(e){ 
                    e = e||window.event;
                    var dom = e.srcElement || e.target;
                    if (e.keyCode == 13 && dom.type!='image') {   
    var form = dom.form;
    for (var i=0; i < form.elements.length; i++) {
    if (form.elements[i] == dom) {
     for(var j=i+1; j <= form.elements.length; j++) {
     if(j == form.elements.length) {
    document.getElementById("submit").focus();
     }
     if (form.elements[j].type != "hidden") {
     form.elements[j].focus();
     return;
     }
     }
     return;
    }
    }
                    }      
                    if(e.keyCode == 13 && dom.type=='image'){  
                        document.showLogin.submit();
                    }
                }
            }
      

  13.   

    不好意思。我也刚有事出去了。
    上面的代码运行后有报错,IE 下:form.elements[j].type 为空或不是对象,
    FF下类似:form.elements[j] is undefined
      

  14.   

    邓肯那么憨厚可爱,不会的,如实在不行,考虑用Jquery来了,版主也弄复杂了。
      

  15.   


    <html>
    <body>
    <script>
    window.onload = function() {
                document.getElementById("username").focus();
                document.onkeydown=keyListener; 
                function keyListener(e){ 
                    e = e||window.event;
                    var dom = e.srcElement || e.target;
    //if (dom.value=="") alert("值为空!");dom.focus();
                    if (e.keyCode == 13 && dom.type!='image') 

    if(window.event){window.event.keyCode=9;return;} //IE只需要这句,下面为FF使用!
      var formd=document.getElementById("showLogin");
      for(var i=0;i<formd.length;i++)
       {
                         if(formd[i].type==dom.type)
       { 
           if(formd[i+1]!="undefinded"){formd[i+1].focus();return;}
           }
                        }
    }
                    if(e.keyCode == 13 && dom.type=='image'){document.showLogin.submit();}
                }
            }
    </script>
    <form name="showLogin" id="showLogin">
      <p> Submit Your Username &Password</p>
    <p>Username <input name="username"type="text" size="20"id="username"></p> 
    <p>Password <input name="password" type="password" size="21"id="password"></p>
    <p>Password <input name="password2" type="password" size="21"id="password2"></p>
     <p><input type="image" name="submit" id="submit" style="position:absolute; float:left; left: 88px; top: 192px;" src="images/enter.gif" onClick="return false;" >
     </p>
    </form> </body>
    </html>
    这样试试可否!
      

  16.   

    FF中, key code是只读的。
      

  17.   

    16楼的代码也不好用,我写了Jquery 代码如下:但不知哪里有错,另外提交就不用考虑只看焦点。
    $(document).ready(function(){
    if($("#username").val()==""){
    $("#username").focus();
    }
    else{if($("#password").val()==""){
    $("#password").focus();
    }
      }
    else{
    $("input:eq(2)").focus();
    }
    });