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

标签 asp.net javascript html

我正在编写一个 ASP.NET 应用程序,并且有一个表单,用户必须按一个键才能使文本框可见,以便他/她可以登录。当按下该键时,我希望标签消失并且文本框变得可见。由于某种原因,“onkeydown”事件在 FF 或 IE 中没有触发,但在 Chrome 中工作正常。该应用程序将使用链接浏览器在 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 事件起作用的唯一方法是文本框控件是否显示并具有焦点。我错过了什么吗?感谢您的帮助!

最佳答案

我认为问题在于 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。我尚未在所有浏览器中测试上述内容,但这是一个开始。

关于asp.net - html 表单的 onkeydown 事件在 IE 7 或 FF 3 中未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/865693/

相关文章:

c# - eav 数据库的 MVC 表单 View

javascript - "virtual"dom 操作?

html - 将悬停样式应用于 li :last-child link

javascript - 如何从 HC-Sticky 插件运行方法?

asp.net - 当 Multiple 为 false 时,HtmlSelect 无法选择多个项目

c# - 在 cookie 变量中分配字符串无法正常工作

c# - 在 ASP.NET MVC 3 应用程序中使用自定义 html 帮助程序

javascript - AngularJS $http.post 与正文

java - 从 javascript 调用 JApplet 函数不是函数

javascript - addClass 被添加到所有 DIV 中,无论其位置如何(视口(viewport))