1

我试图在一定数量的字符后自动跳转到第二行。我正在使用 jquery 中的 keypress 函数来执行此操作。这是我的代码:

<html>
<head>
    <script type="text/javascript" src="http://inet.website-name.com/jquery/jquery-1.7.min.js"></script>
</head>
<body>
    <input id="input1"></input>
    <br />
    <input id="input2"></input>
    <script type="text/javascript">
        $('#input1').keypress(function (e) {
            var tval = $('#input1').val();
            if (tval.length >= 5 && e.which !== 0 && e.charCode !== 0) {
                $('#input2').focus();
            }
        })      
    </script>
</body>
</html>

我遇到的问题是,当它在 chrome 中运行时,在第一个框中键入第 6 个字符,然后将焦点更改为第二个框。当它在 Internet Explorer 中运行时,焦点首先变为第二个框,然后键入第 6 个字符。我需要它在两个浏览器中具有相同的行为。

我尝试使用 keydown 事件,它可以始终如一地改变焦点,但即使我使用退格键、箭头键或任何其他特殊键,焦点也会改变。
提前致谢。

4

1 回答 1

0

您可以将其切换到 keyup 事件并且它会起作用,尽管您将无法使用 e.charCode 检查(是否有原因?)。另请注意>= 5已更改为 a > 5

    $('#input1').keyup(function (e) {
         var c = String.fromCharCode(e.keyCode);
         var isWordcharacter = c.match(/\w/);//matches a-z, A-Z, 0-9, and _
         var tval = $('#input1').val();
         if (tval.length > 5 && e.which !== 0 && isWordcharacter) {
             $('#input2').focus();
         }
    });

小提琴

于 2012-05-11T16:27:10.630 回答