ユーザーが数値を入力するテキスト フィールドがあり、その数値を整数にしたいと考えています。これを行うには、ユーザーが小数点を入力しても無視したいと考えています。
現在、キーアップ時にフィールドの値をチェックする JavaScript 関数があり、最後に入力された文字が小数点の場合は削除されます。これにより、ユーザーが小数点を入力すると、小数点が表示されてから消えるという効果が作成されます。小数点が表示されないようにする方法はありますか?
ユーザーが数値を入力するテキスト フィールドがあり、その数値を整数にしたいと考えています。これを行うには、ユーザーが小数点を入力しても無視したいと考えています。
現在、キーアップ時にフィールドの値をチェックする JavaScript 関数があり、最後に入力された文字が小数点の場合は削除されます。これにより、ユーザーが小数点を入力すると、小数点が表示されてから消えるという効果が作成されます。小数点が表示されないようにする方法はありますか?
キープレス イベントを使用します。
$('input').on('keyup', function (e) {
if (e.which === 46) return false;
}).on('input', function () {
var self = this;
setTimeout(function () {
if (self.value.indexOf('.') != -1) self.value = parseInt(self.value, 10);
}, 0);
});
// don't do anything unless a number key is pressed
$("input").on("keypress", function(event) {
if (event.which < 48 || event.which > 57) {
event.preventDefault();
}
});
おそらく、これは最もユーザーフレンドリーな解決策ではありません。何らかの方法でフィールドを無効としてマークし、それを修正するように依頼する方がよりフレンドリーですが、これにより、整数を取得することが保証されます。
.keydown()
どのキーが押されたかをチェックする関数を使用します。「.」の場合、preventDefault()
.
$('input').keydown(function(e){
var kCode = (e.which || e.keyCode)
if(kCode == 190 || kCode == 110) return false;
if(e.which === 86 && (e.ctrlKey || e.metaKey)) return false;
})
フィドル: http://jsfiddle.net/PsqhJ/1/
編集:ctr + vにユーザーを防止する機能を追加しました。