我正在编写一个asp.net应用程序并且有一个表单,用户必须按一个键才能显示文本框,以便他/她可以登录。按下键时,我希望标签消失,文本框变为可见。出于某种原因,'onkeydown'事件没有在FF或IE中触发,但它在Chrome中运行良好。该应用程序将使用Links浏览器在AML终端上运行,但我现在无法在该平台上进行测试。这是我的代码:
<form id="form1" runat="server" onkeydown="CheckKey(event.keyCode)"
enableviewstate="True" submitdisabledcontrols="False" visible="True">
<script type="text/javascript">
function SetVisibility() {
var txtbx = document.getElementById("txtbx_login")
txtbx.style.display = "none";
var form = document.getElementById("form1")
}
function CheckKey(keycode) {
if (keycode == 113) {
var txtbx = document.getElementById("txtbx_login")
txtbx.style.display = "";
var lbl = document.getElementById("lbl_login")
lbl.style.display = "none";
}
}
</script>
******其他表格元素******
</form>
能够让onkeydown事件发挥作用的唯一方法是显示文本框控件并具有焦点。我错过了什么吗?谢谢你的帮助!
答案 0 :(得分:3)
我认为问题是onkeydown检查是在表单上进行的。
尝试将其移动到body元素,或者更好,使用javascript将事件处理程序添加到窗口事件中:
function handleKeypress(e){
var keycode = e.keyCode || e.charCode;
if (keycode == 113) {
var txtbx = document.getElementById("txtbx_login")
txtbx.style.display = "";
var lbl = document.getElementById("lbl_login")
lbl.style.display = "none";
}
}
window.onkeypress = handleKeypress;
在firefox中你也需要使用event.charCode。我没有在所有浏览器中对上述内容进行测试,但这是一个开始。