4

特定の入力の最大文字数に達したときに、次の入力フィールドに自動的に移動するクライアントのプロジェクト用のスクリプトに取り組んでいます。なんらかの理由で、入力値が本来よりも 1 つ少ない値を返しているため、「しきい値」を超えて余分な文字が入力されると、「次の」入力に移動します。

これが入力値を監視するための私のスクリプトです-ofc、より良い方法がある場合はアドバイスしてください:)-

var watchLength = function (watch) {
    watch.onkeypress = function () {
        var nextInput = getNextSibling(this);
        console.log(this.getAttribute('data-autotab-length'));
        console.log(this.value.length);
        if (this.value.length == this.getAttribute('data-autotab-length')) {
            nextInput.focus();
            console.log('Limit reached here');
        }
    };
};

そして、作業入力へのjsFiddle。最初の入力は「2」文字に制限されていますが、3 を入力すると次の入力にジャンプします。これは keypress/keydown イベントが初期値を読み取らないことに関係していると思いますが、修正方法がわかりません。どんな助けでも本当に感謝しています。

コンソールに結果を記録しています:

http://jsfiddle.net/qdnCZ/

4

4 に答える 4

3

問題は、それonkeypressが必要になる前に起動することです。に置き換えるだけで、チェックしたときに要素が正しく設定されていることを確認できますonkeypressonkeyup<input>value

参照: http://jsfiddle.net/qdnCZ/1/

于 2013-10-11T09:18:59.673 に答える
0

はい、1つ少なく返されます。長さチェックで+1を使用するだけです。これはonkeypress、フィールドが更新される前にイベントが実行されるためです。つまりe.preventDefault()、文字を使用するとフィールドに表示されません。それ以外の場合は使用できますonkeyup

于 2013-10-11T09:19:28.240 に答える