3

空の入力でバックスペースを押すと、前の入力に戻るにはどうすればよいですか?

    $('input').bind('input', function() {
        if (this.value.length >= $(this).attr('maxlength')) {
            $(this).next().select();
        }

        if (this.value.length == 0) {
            $(this).prev().select();
        }
    });

JSFIDDLE: http://jsfiddle.net/EwYKX/

4

2 に答える 2

4

値のinput変更がないため、要素にすでに空の値がある場合、イベントは発生しません。

バックスペースプレスのkeyupチェックで十分です。例のように、入力要素が常に直接の兄弟であると仮定します。

$('input').on('input propertychange', function() {
    if (this.value.length >= this.maxLength) {
        $(this).next().focus();
    }
}).keyup(function(e) {
    if (e.which === 8 && !this.value) {
        $(this).prev().focus();
    }
});

フィドル

古い IE のフォールバックとしてリスナーを追加しましたpropertychangeが、古い IE をサポートするためにこの醜いハックを使用したくない場合は削除できます。また、フォーカス時にフィールド全体を選択しないように交換.select()しましたが、それもあなた次第です。.focus()=]

チェックは、バックスペース キーを押すことによってのみ前のフィールドに移動するようにしますが、ユーザーが他の手段 (たとえば、キーまたはコンテキストの切り取り/削除) でe.which === 8フィールド値を消去した場合でも、前の入力に移動したい場合に備えてdeleteメニュー) も削除できますが、e.which === 8UX に関してはあまり意味がありません。

于 2013-04-19T23:01:32.980 に答える
0

これを試して

        $('input').bind('input, keydown', function (e) {
           if (this.value.length >= $(this).attr('maxlength')) {
              $(this).next().select();
           }

           if (this.value.length == 0 && e.keyCode == 8) {
              $(this).prev().focus();
           }
        });
于 2013-04-19T23:04:54.100 に答える