html表单的onkeydown事件未在IE 7或FF 3中触发

时间:2009-05-14 20:50:02

标签: asp.net javascript html

我正在编写一个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事件发挥作用的唯一方法是显示文本框控件并具有焦点。我错过了什么吗?谢谢你的帮助!

1 个答案:

答案 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。我没有在所有浏览器中对上述内容进行测试,但这是一个开始。