本帖最后由 glovej 于 2012-01-19 09:45:26 编辑

解决方案 »

  1.   

      ev.keyCode=0;
      ev.returnValue=false;
      return false;把这些都删掉
      

  2.   

    果然是删了就有了啊,不过删ev.keyCode没有效果,删returnvalue才有效果,请问何解啊,为什么不同的事件还会相互有影响的,不是说事件顺序是down,press,up的吗
      

  3.   

    onkeydown return 之后,本次的keydown事件就被系统忽略了而keypress事件是 keydown+keyup  算一次有效keydown你把keydown忽略了,自然keypress就不成立了
      

  4.   

    前后依次发生的两个事件,前一个return false(也有一些浏览器是用ev.returnValue=false;)的话,后一个就不再执行了
    本帖相关的三个事件发生次序是keydown  keypress keyup
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head></head>
    <body>
    <input type=text id=t1 onkeydown="g(event);" onkeypress="g1(event);" onkeyup="g2(event);">
    <textarea id="r" rows="20" cols="40" ></textarea>
    <script>var t2 = document.getElementById("r");
    function g(event)
    {
      event = event || window.event;  
      t2.value += "onkeydown,keyCode = " + event.keyCode + "\n"   
    }
    function g1(event)
    {
      event = event || window.event;  
      t2.value += "onkeypress,keyCode = " + event.keyCode + "\n"}function g2(event)
    {
      event = event || window.event;  
      t2.value += "onkeyup,keyCode = " + event.keyCode + "\n"
    }
    </script>  </body>
    </html>