1

jsfiddle: http: //jsfiddle.net/ztNHL/3/

一番上の入力を選択し、次にタブで2番目の入力に移動します。すべてを選択するのではなく、値の最後にカーソルを置きます。javascriptを削除して再度実行すると、この動作が発生しないことがわかります。

無知。

4

4 に答える 4

2

奇妙なことは何もありません。keyupイベントが反応しTABてコードを実行します

this.value = this.value.replace(/[^0-9\.]/g, "");

witchは入力フィールドの値を更新します。そのため、最初にフィールドを選択してから、選択を削除します。

于 2012-07-05T21:46:06.243 に答える
2
$(function() {
    $('.numbersOnly').keyup(function (evt) {
        if ($.inArray(evt.which, [37, 38, 39, 40]) != -1) return false;
            this.value = this.value.replace(/[^\d\.]/g,'');
            if (evt.which == 9) this.select(); //<-- re-select field value
    });
});            
​

私が行った他のいくつかの変更:

  • パターンを短くしました(\dエイリアスを使用)
  • カーソルキーが再び有効になります(コードでは、カーソルキーは機能しなくなりました)
  • 選択は、タブキーが押された場合にのみ行われ、単なるキーではありません。
于 2012-07-05T21:47:34.340 に答える
2

ひや他に次のような問題がいくつかあります。

スムーズに動作するデモ:http: //jsfiddle.net/wWxVL/2/

  • 左矢印キーは機能しません。
  • ユーザータイプの場合、内容は少し風変わりです。
  • タブ/すべての問題を選択(既知)

ここでの素晴らしい投稿:jQueryを使用してHTML入力ボックスで数値(0-9)のみを許可する方法は?

お役に立てば幸いです、乾杯

コード

$(document).ready(function() {
    $(".numbersOnly").keydown(function(event) {
        // Allow: backspace, delete, tab, escape, and enter
        if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 ||
        // Allow: Ctrl+A
        (event.keyCode == 65 && event.ctrlKey === true) ||
        // Allow: home, end, left, right
        (event.keyCode >= 35 && event.keyCode <= 39)) {
            // let it happen, don't do anything
            return;
        }
        else {
            // Ensure that it is a number and stop the keypress
            if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
                event.preventDefault();
            }
        }
    });
});​
于 2012-07-05T21:48:49.063 に答える
1

2番目のボックスに(クロムで)タブキーを押すと、タブキーを離すまで(つまりキーアップ時に)値の最後に移動しません

this.value = this.value.replace(/[^0-9\.]/g,'');

タブキーを離すと実行されます

于 2012-07-05T21:47:05.270 に答える