onkeypress事件没有解雇

时间:2012-04-16 09:50:31

标签: jquery html

我已经编写了一个用于处理鼠标和键盘事件的代码。但onkeypress事件并没有在Firefox,IE等中触发。我也尝试过keydown事件,但这不起作用。 li元素的HTML代码为:

print "<li class=\"ui-menu-item \" id=\"toli$i\"  value=\"'$name','$email'\" role=\"menuitem\"><a class=\"ui-corner-all\" href=\"#\"  onkeypress=\"keyhandle('$name','$email');\" onclick=\"fillto('toli$i','$name','$email');\">$ename $ediv $email></a></li>";
    }
    elsif($field eq "cc"){

 print "<li class=\"ui-menu-item \" id=\"toli\" role=\"menuitem\"><a class=\"ui-corner-all\" href=\"#\" onkeypress=\"keyhandle('$name','$email');\" onclick=\"fillcc('$name','$email');\">$ename $ediv $email></a></li>";
}
elsif($field eq "bcc"){

 print "<li class=\"ui-menu-item \" id=\"toli\" role=\"menuitem\"><a class=\"ui-corner-all\" href=\"#\" onkeypress=\"keyhandle('$name','$email');\" onclick=\"fillbcc('$name','$email');\">$ename $ediv $email></a></li>";
}
}
print "</ul>";

javascript函数是

<script language="javascript">
function keyhandle(id,name,email){

alert (id);
 }
</script>

onclick事件正在触发,但onkeypress未触发。谁能说明为什么会这样?

提供给浏览器的代码是

<div id="displayto" class="display ui-widget"><ul class="ui-autocomplete ui-menu ui-widget-content ui-corner-all " style="width: 550px; max-height: 200px;" aria-activedescendant="ui-active-menuitem" role="listbox"><li class="ui-menu-item " id="toli1" value="'AMAL SMITHA S','amal_smitha@vssc.gov.in'" role="menuitem"><a class="ui-corner-all" href="#" onkeypress="keyhandle('AMAL SMITHA S','amal_smitha@vssc.gov.in');" onclick="fillto('toli1','AMAL SMITHA S','amal_smitha@vssc.gov.in');">"AMAL SMITHA S" (COM) &lt; amal_smitha@vssc.gov.in&gt;</a></li></ul></div>

我试过了代码

 $(document).ready(){
        $("#displayto").keypress(function(){
            alert('a');
    });
} 

但它也没有用。我已为每个

  • 项目提供了序列ID。我想通过按键功能传递这个顺序id。这个id值用于按下“向下”箭头按下的上一个id值,按下向上箭头的上一个值。如果按下回车键,则调用fillto()函数。此代码用于自动完成功能。有没有其他方法可以做到这一点?请帮助解决这个问题。

  • 3 个答案:

    答案 0 :(得分:5)

    这可能有点太晚了,但是现在我正在处理同样的问题并且可能找到了解决方案。

    我的情况是:

    <span onclick="javascript: /* some javascript to select element */ " onkeypress="javascript: /* call function to process key event */">...</span>
    

    我发现某处可以让元素捕获需要可聚焦的关键事件。默认情况下,所有输入元素都应该是可聚焦的,也可能是其他一些输入元素,因浏览器而异。

    但是,你可以使一个元素可聚焦,在我的例子中,我使用 tabindex 属性来实现这一点。像这样:

    <span tabindex="" onclick="javascript: /* some javascript to select element */ " onkeypress="javascript: /* call function to process key event */">...</span>
    

    这适用于Firefox,但不适用于Chrome。只有当我将一些值放入tabindex属性时,事件才会被触发并且onkeypress =“”中的javascript被执行。

    所以现在我最终得到了类似的东西:

    <span tabindex="0" onclick="javascript: /* some javascript to select element */ " onkeypress="javascript: /* call function to process key event */">...</span>
    

    编辑: 我忘了添加你实际上需要关注元素。我通过调用focus()在onclick =“”中做到了。

    答案 1 :(得分:0)

    你能用jQuery吗?如果可以,尝试这样的事情,我认为可能会更好:

    $(document).ready(){
        $("#displayto").keypress(function(){
            alert('a');
        });
    }//end of document ready
    

    答案 2 :(得分:0)

    可能事件是在输入之前加载的,为什么不起作用,请尝试使用直播,

    $(document).ready(){
    
            $('input').live('keypress', function (e) {
               if ( e.keyCode == 9 ){
                   alert( 'Tab pressed' );
                }else
                  alert("another key pressed");
            });
    }
    

    如果您没有使用输入标签,请尝试使用您正在使用的输入标签,例如div的ID