最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - jQuery Focus() or keypress() not working in IE and Chrome - Stack Overflow

programmeradmin1浏览0评论

I have the code blow for tabbing through 2 fields and it has no effect in IE and Chrome, it seems it runs nothing (for example I get nothing when I put alert) and in Firefox it runs with some bug (it jumps twice there) where do you think the problem is, I'm developing in by ASP.Net and jQuery version 1.3.2

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

I have the code blow for tabbing through 2 fields and it has no effect in IE and Chrome, it seems it runs nothing (for example I get nothing when I put alert) and in Firefox it runs with some bug (it jumps twice there) where do you think the problem is, I'm developing in by ASP.Net and jQuery version 1.3.2

$(document).ready(function () {
    $("#TextBox1").keypress(function (e) {
        var kCode = e.keyCode || e.charCode; 
        if (kCode == 9) {
            $("#TextBox2").focus();
        }
    });
});
Share Improve this question edited Jul 9, 2014 at 9:22 Nickolay Ninarski 971 silver badge10 bronze badges asked Nov 9, 2011 at 23:41 ePezhmanePezhman 4,0107 gold badges47 silver badges83 bronze badges 1
  • 1 Don't waste your time manually doing this work! Utilize the tabindex attribute. – Josh Stodola Commented Nov 9, 2011 at 23:46
Add a ment  | 

3 Answers 3

Reset to default 4

I think the main problem is that you're using the keypress event, which should only be fired when a character is added to the input, not when any key (like TAB) is pressed.

To handle other key presses you will need to use keydown. However, testing that in your fiddle seems to still not work. To make it work (in Chrome at least), I had to prevent the default action:

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

Here's an update fiddle. However, if I've understood your question correctly, all you're trying to do is change the focused element when the tab key is pressed... if that's right, why not just use the tabindex attribute instead?

The keypress event does not fire for tab (keycode 9). You'll need to use keyup or keydown.

If this is ASP.NET, you need to reference the controls by the ClientID:

$(document).ready(function () { 
    $("#<%=TextBox1.ClientID%>").keypress(function (e) { 
        var kCode = e.keyCode || e.charCode;  
         if (kCode == 9) { 
            $("#<%=TextBox2.ClientID%>").focus(); 
        } 
    }); 
}); 
发布评论

评论列表(0)

  1. 暂无评论