KeyUp / KeyDown keyCode不能在IE中的密码字段上工作?

时间:2012-06-28 23:02:18

标签: jquery asp.net internet-explorer

我有一个简单的表格

<asp:TextBox ID="txtUsername" runat="server" CssClass="watermarkOn" TabIndex="1" />
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password" CssClass="watermarkOn" TabIndex="2" />
<asp:LinkButton ID="btnLogin" runat="server" CssClass="imgbtn_login" TabIndex="3" Text="login" onclick="btnLogin_Click" CausesValidation="false" />

使用以下jQuery

$(document).ready(function () {
    $("#<%=txtUsername.ClientID %>").keydown(function (event) {
        if (event.keyCode == 13) {
            eval($("#<%=btnLogin.ClientID %>").attr('href'));
        }
    });
    $("#<%=txtPassword.ClientID %>").keydown(function (event) {

        if (event.keyCode == 13)
        {
            eval($("#<%=btnLogin.ClientID %>").attr('href'));
        }
    });
});

这在FF,IE7,IE 9,Chrome,Safari中完全正常....但有一个例外。某些IE8安装它适用于用户名框,但不适用于密码框。有谁知道为什么会出现这种情况。我没有看到任何有关密码框行为差异的文档。

更新

我也尝试过keyup,以及event.which,两者都没有用。用户名框工作正常,但密码框不会像它应该那样触发。

2 个答案:

答案 0 :(得分:3)

直接在密码字段上附加keypress处理程序对我来说在IE中都不起作用,但你可以将它附加到它的父代:

<script type="text/javascript">
$("#loginForm").keypress(function(e) {
    if (e.keyCode == $.ui.keyCode.ENTER) {
        // do your thing :)
    }
});
</script>

<form id="loginForm" action="...">
  <input type="text" id="username" value="" />
  <input type="password" id="password" />
  ...
</form>

答案 1 :(得分:2)

如果你使用jQuery(你是:))尝试(而不是keyCode)使用which

  

jQuery规范化event.which,具体取决于浏览器是否支持event.which,event.keyCode或event.charCode:

if (event.which == 13) {

在这里您可以找到更多信息:http://unixpapa.com/js/key.html(查看: 3.识别密钥