1

特定の文字数の後に自動的に2行目にジャンプしようとしています。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>

私が遭遇している問題は、これがクロムで実行されている場合、6番目の文字が最初のボックスに入力され、続いてフォーカスが2番目のボックスに変わることです。これをInternetExplorerで実行すると、最初にフォーカスが2番目のボックスに変更され、次に6番目の文字が入力されます。両方のブラウザで同じ動作をする必要があります。

キーダウンイベントを使用してみましたが、フォーカスを一貫して変更するという点では機能しましたが、バックスペース、矢印キー、またはその他の特別なキーを使用してもフォーカスが変更されます。
前もって感謝します。

4

1 に答える 1

0

それをキーアップイベントに切り替えることができ、それは機能しますが、e.charCodeチェックを使用することはできません(理由がありますか?)。また、 >=5が> 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 に答える