我有一个简单的表格
<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,两者都没有用。用户名框工作正常,但密码框不会像它应该那样触发。
答案 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.识别密钥)