工数や金額の値を入力する目的で、
整数と小数のみを入力できるようにし、それ以外の文字は
不正文字として入力できないようにしたいと思っております。
また、".123"や"0..5"や"1.2.3"といった値も不正文字とみなしたい
です。不正文字が入力された場合は、アラートで注意をうながしたい
と思っています(再入力をうながす)。じつは、このサイトの
同じくJavaScriptの質問コーナーで4月1日18時台に、
「小数点以下第二位まで整数、小数ともに表示させたい」
という質問をさせていただき、皆様に助けていただいて解決したの
ですが、その「小数点以下第二位・・・」と同じ関数の中に、
不正文字は入力させない、というプログラムを組み込みたいと
考えています。
もしよろしければ、どなたか、お願い申し上げます。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
Number()でできると思います。
Number(str)とすると、文字列strが数値に変換されます。
もしstrが数値として不適切な場合にはこの結果はNaN(Not a Number)という特別な数になりますので、
isNaN(Number(str))
で不正な入力かどうかを判定できます。例えば
isNaN(Number("1")) == false
isNaN(Number("1.2")) == false
isNaN(Number("a")) == true
isNaN(Number("4.5t")) == true
などとなります。
ちなみにparseInt()、parseFloat()は"123a"等の途中まで数値として解釈できる文字列に対して甘いですので、この目的では使用できません。
また、".123"はこの方法では判定できません。これは通常では数値として正しいとされる表記だからです。
この手の数値を考慮する場合には、処理としては次の3通りが考えられます。
1.".5"と入力されたら自動的に"0.5"に変える。"a"等に対しては入力をクリアする
2.".5"と入力されたら自動的に"0.5"に変える。"a"等に対しては警告を表示する
3.".5"や"1e4"等の入力を許可しない
1は
function normalizeAsNumber(x) {
var tmp = Number(val);
return isNaN(tmp) ? "" : tmp.toString();
}
を使用すればできます。
2はreturn文の""の部分を(alert("警告"),"")に変更すればできます。
3は正規表現を使用するのが簡単です。
/^\d*$|^\d+\.\d+$/
という表現で"", "12", "34.22"等にマッチし、".5", "1.", "1e4"等にはマッチしませんので、
str = str.match(/^\d*$|^\d+\.\d+$/);
などとすればよいでしょう。(許可されない文字列の場合にはstr==nullとなります)
どうもありがとうございます!
これから実践に入りますが、
もしも今回のお答えに関して疑問が
でてしまったとしたら、
ご質問をさせていただくことがあるかと
思います。
そのときは、どうかよろしくお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java 南京錠 2 2023/02/04 11:46
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- Excel(エクセル) エクセルでセルに何らかの文字が入力されたらそれを任意の数値として認識させる方法がしりたいです。 3 2023/03/16 20:19
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NET2003 テキストボックスに...
-
VBAによる第3、4水準文字の判定...
-
「終了していない文字列型の定...
-
正整数の半角数字かどうか判定する
-
VC#でテキストボックスに変数の...
-
漢字などを正規表現でパターン...
-
gas 全角数字を半角数字に変換
-
入力された文字を1文字ずつチ...
-
CListCtrl の特定のセル(アイ...
-
エクセル 半角英数6文字以上 ...
-
JSで文字列の先頭1文字を消した...
-
ブラウザ自体の事じゃなくてJav...
-
if(1){...}とはどういうことで...
-
JSPの処理の途中で、JavaScript...
-
javascriptで「オブジェクトを...
-
VBScript から JavaScript を呼...
-
VBA ステータスバー DoEvents
-
PowerPointで時計表示
-
jQuery ui Datepicker 明日以降...
-
htmlのfileタグに自動で値を入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「終了していない文字列型の定...
-
VB.NET2003 テキストボックスに...
-
Access VBAで、数字だけをチェ...
-
gas 全角数字を半角数字に変換
-
VBAによる第3、4水準文字の判定...
-
正整数の半角数字かどうか判定する
-
ハイフンだけ置換したい。
-
エクセルVBA/ Formatで文字列が...
-
Visual Basic 6.0 のテキストボ...
-
エクセル 半角英数6文字以上 ...
-
JavaScriptに関する質問です。 ...
-
禁止文字チェック
-
正規表現について
-
外字のチェック
-
Javascript 全角カナ+半角スペ...
-
Excel VBA カタカナ セル判定...
-
文字認証の問題
-
入力された文字を1文字ずつチ...
-
C#でTextBoxに数値のみ入力可能...
-
VC#でテキストボックスに変数の...
おすすめ情報