javascript使用onKeyDown等事件响应键盘事件,window.event.keyCode属性可以同时记录所按下键的keyCode值,基于以上两点就很容易实现用一个键来替代另一个键。例如:方向键↓来替代Tab键,实现代码如下: <script language="javascript"> 
<!-- 
function changeFocus() 

    if(window.event.keyCode == 40) 
        window.event.keyCode = 9; 

//--> 
</script> 但是,现在又有一个新的需求,就是使用方向键↑来替代Shift+Tab的组合,那么问题就出现了。一般我们按组合键都是先按住一个,再按下另一个,不过,我想也没那么强的人能真正同时按下两个键。所以,当你按下一个键的时候onKeyDown事件就响应了,这样就无法真正获得组合键对应的keyCode。因此,也无法实现这个新需求! 我想有心的读者一定会说“这完全可以避开这一点不谈,而利用控件index来解决问题”。这样的话代码就没有什么重用性。因为我这里举的例子可以用到index所以才得到这么个想法。那假如我想用c来代替ctrl+c怎么办?难道有要写一套代码? 我不知道我的问题是否说清楚了,也不知道帖子是否够了删帖的标准。但是这个问题希望大家能够探讨一下,找到一个更合理的解决方案。

解决方案 »

  1.   

    “使用方向键↑来替代Shift+Tab的组合”?直接判断是否按下↑不就可以了吗?
      

  2.   

    我的需求是用↑来替代Shift+Tab的组合
    我想在实现是:
    function fun(){
    if(window.event.keyCode==38){
    window.event.keyCode = 15 
    }
    }
    可是实现不了
    我查到 Shift+Tab 的keyCode = 15 不知道对不对?
      

  3.   

    不对,那样不能实现,只能用index
    function fun() {
        if(window.event.keyCode==38) {
            document.all(event.srcElement.sourceIndex - 1).focus();
        }
    }
      

  4.   

    可以获得组合键的keycode, <script>   
      function   test(e){   
      if((event.shiftKey)&&(event.keyCode==9))   
      {   
       alert("您按了shif键和Tab")     }   
      }   
      </script>   
      <form>   
      <textarea   onkeypress="test()"></textarea>   
      </form>   
    不过却是不可模拟的!Shift+Tab的系统函数是你获得不到的!所以你也调用不到!至少我不知道怎么获取这个函数!使用方向键↑来替代Shift+Tab的组合是指当按下键↑时执行Shift+Tab的组合的函数!所以你的思路就错了!
    你应当自己去实现你要的功能!
      

  5.   

    sourceIndex 是乱的啊
    值不是依次递增的?
    怎么办?
      

  6.   

    这只是模拟,按上键就是一个控件focus,shift+tab也是这样的