jQuery Focus()或keypress()无法在IE和Chrome中运行

时间:2011-11-09 23:41:22

标签: javascript jquery focus keypress

我有通过2个字段标记的代码,它在IE和Chrome中没有任何效果,似乎它什么都没有运行(例如,当我发出警报时我什么都没得到),而在Firefox中它运行时带有一些bug(它会跳转)两次那里)你认为问题在哪里,我正在开发ASP.Net和jQuery版本1.3.2

$(document).ready(function () {
    $("#TextBox1").keypress(function (e) {
        var kCode = e.keyCode || e.charCode; 
        if (kCode == 9) {
            $("#TextBox2").focus();
        }
    });
});

3 个答案:

答案 0 :(得分:4)

我认为主要的问题是你正在使用keypress事件,只有在将字符添加到输入时才会触发,而不是在按下任何键(如TAB)时触发。

要处理其他按键操作,您需要使用keydown。然而,在你的小提琴中测试似乎仍然无效。为了使其工作(至少在Chrome中),我必须阻止默认操作:

$(document).ready(function () {
    $("#TextBox1").keydown(function (e) {
        e.preventDefault();
        var kCode = e.keyCode || e.charCode; 
        console.log(kCode);
         if (kCode == 9) {
            $("#TextBox2").focus();
        }
    });
});

这是一个update fiddle。但是,如果我正确地理解了你的问题,那么你所要做的就是在按下Tab键时更改聚焦元素...如果这是正确的,为什么不改用tabindex属性呢? / p>

答案 1 :(得分:3)

标签(键码9)不会触发keypress事件。您需要使用keyupkeydown

答案 2 :(得分:2)

如果这是ASP.NET,则需要通过ClientID

引用控件
$(document).ready(function () { 
    $("#<%=TextBox1.ClientID%>").keypress(function (e) { 
        var kCode = e.keyCode || e.charCode;  
         if (kCode == 9) { 
            $("#<%=TextBox2.ClientID%>").focus(); 
        } 
    }); 
});