为什么onkeydown,onkeypass取不到输入的第一个字符onkeyup却又执行2次???
有什么解决方法吗??

解决方案 »

  1.   

    上测试代码,不存在你说的情况阿
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <script type="text/javascript"> 
        function keydown(e)
        {
            //alert("keydown:" + e.keyCode);
        }
        function keyup(e)
        {
            alert("keyup:" + e.keyCode);
        }
        function keypress(e)
        {
            //alert("keypress:" + e.keyCode);
        }
    </script>
    </head> 
    <body> 
        <input type="text" size="10" onkeydown="keydown(event);" onkeyup="keyup(event);" onkeypress="keypress(event);" />
    </body> </html> 
      

  2.   

    onkeydown,onkeypress顾名思义,是按键按下时就响应事件
    onkeyup怎么会执行2次呢,按键起来时执行一次
    如果要用onkeydown,onkeypress,可以用String.fromCharCode(event.keyCode)来取得值
      

  3.   


    对某个元素的 onkeydown,onkeypass,onkeyup三个事件相互独立的,执行的顺序依次是1,onkeydown, 2,onkeypass, 3,onkeyup
      

  4.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <script type="text/javascript"> 
        function keydown(e)
        {
            var s="keydown:" + String.fromCharCode(e.keyCode)+ "\r\n";
            show(s);
        }
        function keyup(e)
        {
            var s="keyup:" + String.fromCharCode(e.keyCode) + "\r\n";
            show(s);
        }
        function keypress(e)
        {
            var s="keypress:" + String.fromCharCode(e.keyCode)+ "\r\n";
            show(s);
        }
        function show(s)
        {
            var o=document.getElementById('s');
            o.innerHTML +=s;
        }
    </script>
    </head> 
    <body> 
        <input type="text" size="10" onkeydown="keydown(event);" onkeyup="keyup(event);" onkeypress="keypress(event);" />
        <br />
        <textarea id='s' rows="20" cols="20"></textarea>
    </body> </html> 
      

  5.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     </HEAD> <BODY>
      <INPUT TYPE="text" NAME="dd" onkeydown="alert(event.keyCode+':'+this.value);" />
     </BODY>
    </HTML>//输入d,返回 "68:"
      

  6.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     </HEAD> <BODY>
      <INPUT TYPE="text" NAME="dd" onkeydown="alert(event.keyCode+':'+String.fromCharCode(event.keyCode));" />
     </BODY>
    </HTML>
      

  7.   

    中文输入会有问题,其它的需要判断,但也会存在问题,假如我是从字符串中间写入呢?
    lz可以用onkeyup、onpropertychange、oninput这样去判断,或许效果会好一点
      

  8.   

    5楼的代码 onkeydown 跟onkeyup 都是执行两次