0

最初にこのフィドルにアクセスしてください: http://jsfiddle.net/7Prys/

ユーザーが最初のフィールドを入力したときに取得したいもの (ユーザーはフィールドごとに 1 つの文字列しか入力できません) 2 番目のフィールドは自動的にフォーカスされ、これは 4 番目の入力フィールドまで続きます。そのための簡単なjQueryはありますか? また、コードを削除すると、バックスペース キーを押すと、前のコードが 1 つずつフォーカスされます。

html は次のとおりです。

<input type="text" maxlength="1" class="small" />
<input type="text" maxlength="1" class="small" />
<input type="text" maxlength="1" class="small" />
<input type="text" maxlength="1" class="small" />

およびjQuery:

$(".small").onchange(function () {
    $(this).next().find(".small").focusIn();
});
4

6 に答える 6

6

これは私のために働いた:

$(".small").keyup(function (e) {
    if(e.keyCode == 46 || e.keyCode == 8){
        $(this).prev('.small').focus();
    }
    else {
      $(this).next('.small').focus();
    }
});

フィドル: http://jsfiddle.net/5Sv2f/

于 2013-07-08T19:32:27.030 に答える
3

試す:

$(".small").keyup(function () {
    $(this).next().focus();
});

jsFiddle の例

いくつかのメモ。jQuery では.change()、 ではなくを使用します.onchange()。次に、.find()子孫要素を検索します。この例では、兄弟であるため、正しい要素を見つけることはできません。

于 2013-07-08T19:31:22.243 に答える
3

ここにはさまざまな問題があります。

onchangeである必要がありますがchange、これは入力がフォーカスを失ったときにのみトリガーされ、うまく機能しません。を使用することをお勧めし.keyupます。

$(this).next()は入力要素なので、$(this).next().find(".small")何も見つかりません。を使用できます$(this).next(".small")が、$(this).next()十分です。

http://jsfiddle.net/ExplosionPIlls/7Prys/6/

編集:e.which == 8バックスペースが押されたかどうかを確認してから、.prev代わりに使用できます。

http://jsfiddle.net/ExplosionPIlls/7Prys/11/

于 2013-07-08T19:31:34.353 に答える
3

どうぞ:

$(".small").on('keyup', function (e) {
    if(e.keyCode == 8){ /* backspace */
        $(this).prev('.small').focus();
    }else{
        $(this).next('.small').focus();
    }
});

Fiddle: http://jsfiddle.net/7Prys/10/
これは、バックスペース以外のキーが押されたときに次の入力に移動し、バックスペースが押されたときに前の入力に移動します。|| e.keyCode == 46Delete キーを認識したい場合は、if ステートメント を追加できることに注意してください。


.onChangeまたは などというものはありません.focusIn。私の例のようにイベント.onに使用できます。keyupまた、.find().next('.small')ちょうどあるべき.next('.small')です。

于 2013-07-08T19:32:37.830 に答える
2

on change イベントのようなものはありません。

使えるイベントがありますchange

于 2013-07-08T19:31:06.100 に答える
0

.onChange() ではなく .change() です

http://api.jquery.com/change/

于 2013-07-08T19:31:35.540 に答える