我已经编写了一个用于处理鼠标和键盘事件的代码。但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) < amal_smitha@vssc.gov.in></a></li></ul></div>
我试过了代码
$(document).ready(){
$("#displayto").keypress(function(){
alert('a');
});
}
但它也没有用。我已为每个
答案 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