jsfiddle: http: //jsfiddle.net/ztNHL/3/
一番上の入力を選択し、次にタブで2番目の入力に移動します。すべてを選択するのではなく、値の最後にカーソルを置きます。javascriptを削除して再度実行すると、この動作が発生しないことがわかります。
無知。
jsfiddle: http: //jsfiddle.net/ztNHL/3/
一番上の入力を選択し、次にタブで2番目の入力に移動します。すべてを選択するのではなく、値の最後にカーソルを置きます。javascriptを削除して再度実行すると、この動作が発生しないことがわかります。
無知。
奇妙なことは何もありません。keyup
イベントが反応しTABてコードを実行します
this.value = this.value.replace(/[^0-9\.]/g, "");
witchは入力フィールドの値を更新します。そのため、最初にフィールドを選択してから、選択を削除します。
$(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
エイリアスを使用)ひや他に次のような問題がいくつかあります。
スムーズに動作するデモ: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();
}
}
});
});
2番目のボックスに(クロムで)タブキーを押すと、タブキーを離すまで(つまりキーアップ時に)値の最後に移動しません
this.value = this.value.replace(/[^0-9\.]/g,'');
タブキーを離すと実行されます