【问题标题】:onkeydown event for html form not firing in IE 7 or FF 3在 IE 7 或 FF 3 中未触发 html 表单的 onkeydown 事件
【发布时间】:2009-05-14 20:50:02
【问题描述】:

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

【问题讨论】:

    标签: asp.net javascript html


    【解决方案1】:

    我认为问题在于对表单进行了 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。我还没有在所有浏览器中测试上述内容,但这是一个开始。

    【讨论】:

    • 完美。就是这样。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多