event.altKey 等再+keyCode的代码

解决方案 »

  1.   

    <HEAD>
    <SCRIPT>
    function init() {
        spanLeftAlt.innerText='false';
        spanRightAlt.innerText='false';
    }function indicate(obj, arg) {
        obj.innerText=arg;
    }function AltDown() {
        if (event.altLeft) {
            indicate(spanLeftAlt,'true');
        }
        else {
            if (event.altKey) {
                 indicate(spanRightAlt,'true');
            }
        }
    }
        
    function AltUp() {
        if (!event.altKey) {
            indicate(spanLeftAlt,'false');
            indicate(spanRightAlt,'false');
        }
    }
    </SCRIPT>
    </HEAD><BODY onload="document.body.focus(); init()" onkeydown="AltDown();" onkeyup="AltUp();"><P>Press either the left or right ALT key.</P>
    <TABLE>
    <TR>
    <TD><I>Left ALT Key Pressed</I></TD>
    <TD><I>Right ALT Key Pressed</I></TD>
    </TR>
    <TR>
    <TD ALIGN="center"><SPAN ID="spanLeftAlt"></SPAN></TD>
    <TD ALIGN="center"><SPAN ID="spanRightAlt"></SPAN></TD>
    </TR>
    </TABLE>
    </P>
    </BODY>
      

  2.   

    HTML>
    <script>
    function test(e){
    if((event.ctrlKey)&&(event.keyCode==10))
    {
    alert("您按了CTRL+Enter")
    }
    }
    </script>
    <form>
    <textarea onkeypress="test()"></textarea>
    </form>
    </HTML>   
      

  3.   

    : net_lover(孟子E章) 你没有明白我的意思,我不是测试是否按下了组合键,而是要模拟按下了组合键,
    比如:当按下一个button则相当于按下Ctrl+P,是这个意思。
      

  4.   

    比如说:我有几个文本框,用来输入数据。
    当我按向下的键头时就自动移动到下一个文本框中,
    这个容易,只需将event.keyCode=9就行了,按向上的键 头就自动移动到上一个文本框。
    这个也行,只需模拟按下Shift+Tab就行了,查现在的问题是我怎样来模拟 Shift+Tab键 啊
      

  5.   

    如果不强调耦合性,则给这些input编号(id="input"+数字),然后在keydown事件中使需要输入数据的input得到焦点不就可以了.
      

  6.   

    你那是我的最后一招了,如果input很少,你那种方法的确很好,但我现在要处理的input很多,而且存在着动态变化,所以处理起来有点麻烦,主要是我不希望文件太大。
      

  7.   

    应该是不可能模拟。要不然HTML都能黑了你的客户机
      

  8.   

    我有几个文本框,用来输入数据。
    当我按向下的键头时就自动移动到下一个文本框中,
    这个容易,只需将event.keyCode=9就行了,代码粘出出来看看我怎么做不出来啊
      

  9.   

    现丑了:)<HTML>
    <HEAD>
    <META http-equiv=Content-Type content="text/html; charset=unicode">
    </HEAD>
    <script language=JavaScript>
    function CheckKey()
    {
     if (event.keyCode==40)
    event.keyCode =9
    }
    </script>
    <BODY onkeydown="CheckKey()" onload=text1.focus()>
    <P><INPUT id=text1 name=text1 value=11></P>
    <P><INPUT value=22></P>
    <P><INPUT></P>
    <P><INPUT value=44></P>
    <P><INPUT></P>
    </BODY>
    </HTML>
      

  10.   

    to vxhelp(我是第一万个BUG) 厉害你试了event.shiftKey=true;了吗?
      

  11.   

    我试个,不过不行,用shift的keyCode + tab的keyCode我也试老祖宗不过还是不行,
    不知道还有没有其它的方法没?我觉得应该有吧,有谁知道不???
      

  12.   

    好像不可以:(
    已经触发的事件改变shiftKey会报错(虽然MSDN说可以set/retrieve)
    用<script>
    function f(){
    if(event.keyCode==40){
    event.keyCode=9;
    }
    if(event.keyCode==38){
    var x=document.createEventObject("onkeydown")
    x.shiftKey=true;
    x.keyCode=9;
    event.srcElement.fireEvent("onkeydown",x)
    }
    }
    document.onkeydown=f
    </script>可以检测到(event.keyCode==9&&event.shiftKey)为true,而且event.srcElement也是那个input,可就是不能像按下shift+tab那样:(,也许就是无法触发这个事件,就像用其他事件不能调出系统的右键菜单一样?
    还是用input的onkeydown/onkeyup事件来判断吧,用htc会简化一些,给你一个简单的例子:
    test.htm
    <style>
    input {behavior:url("test.htc")}
    </style>
    <input><br>
    <input><br>
    <input><br>
    <input><br>
    <input><br>
    <input><br>
    <input><br>
    <input><br>下面内容存为test.htc,并和test.htm放在同一目录下:
    <PUBLIC:COMPONENT>
    <PUBLIC:PROPERTY NAME="haveFocus" VALUE="false">
    <PUBLIC:ATTACH EVENT="onkeyup" ONEVENT="test()" />
    <PUBLIC:ATTACH EVENT="onfocus" ONEVENT="getFocus()" />
    <PUBLIC:ATTACH EVENT="onblur" ONEVENT="lostFocus()" />
    <SCRIPT LANGUAGE="JScript">
    var MyDir=null
    var obs=document.all.tags("INPUT")
    function getFocus(){
    event.srcElement.haveFocus=true;
    }
    function lostFocus(){
    event.srcElement.haveFocus=false;
    }
    function test(){
    var i=0;
    ob=event.srcElement;
    if(ob.tagName!="INPUT") return;
    switch(event.keyCode){
    case 38:MyDir="up";break;
    case 40:MyDir="down";break;
    defalut:return;
    }
    obs=window.document.all.tags("INPUT");
    for(i=0;i<obs.length;i++){
    if(obs[i].haveFocus) break;
    }
    if(MyDir=="up"){
    if(i<=0) return;
    obs[--i].focus();
    }else if(MyDir=="down"){
    if(++i>=obs.length) return;
    obs[i].focus();
    }
    }
    </SCRIPT>
    </PUBLIC:COMPONENT>