JavaScriptで半角数字の入力チェックをするには?

[上に] [前に] [次に]
みかん☆〃 [E-Mail] 1999/03/15(月) 17:32:35
もしよければ教えてください。
JavaScriptを使って、フォームの内容をSubmitするときに
半角数字で入力されているかどうかのチェックをしたいのですが
なにぶんプログラムの経験がないものでどうしてよいのか
全くわかりません。

よろしければ、サンプルとかいただけませんか?
よろしくお願いします。m(_ _)m

みかん☆

ポケ鬼!! 1999/03/15(月) 19:09:53
こうです。
IEとMozillaの両方で実現しようとすると、どうしてもこの長さが必要になってします(と思う・・・)。

==========================================================

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML LANG="ja">
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
<META HTTP-EQUIV="Content-Script-type" CONTENT="text/javascript">
<LINK REV="made" TITLE="Your Name" HREF="mailto:your@email.com">
<SCRIPT TYPE="text/javascript">
<!--
function check(obj)
{

}

function check(obj)
{
var i;
var moji;
var len;
var str;
var flg = 0;

str = obj.NUMBER.value;
len = StrLen(str);

if (len == 0) {
alert("入力がありません。")
return (false);
}

if (navigator.appName == "Microsoft Internet Explorer") {
for (i = 0; i < len; i++) {
moji = GetCharAt(str, i);
if (moji < "0" || moji > "9") {
flg = 1;
}
}
} else {
for (i = 0; i < len; i++) {
moji = GetCharAt(str, i);
if ((moji < "0" || moji > "9") && moji.length != 1) {
flg = 1;
}
}
}

if (flg) {
alert("数字以外の文字が含まれています。")
return (false);
} else {
obj.submit();
return (true);
}
}

function StrLen(str)
{
var i;
var len;
var moji;
var xmoji;

if (navigator.appName == "Microsoft Internet Explorer") {
return (str.length);
} else {
len = 0;
for (i = 0; i < str.length; i++) {
moji = escape(str.charAt(i));
xmoji = eval("0x" + moji.charAt(1));
if ((xmoji == 8) || (xmoji == 9) || (xmoji == 14) || (xmoji == 15)) {
i++;
}
len++;
}
return (len);
}
}

function GetCharAt(str, pos)
{
var i;
var len;
var moji;
var emoji;
var xmoji;

if (navigator.appName == "Microsoft Internet Explorer") {
return (str.charAt(pos));
} else {
len = 0;
for (i = 0; i < str.length; i++) {
moji = str.charAt(i);
emoji = escape(moji);
xmoji = eval("0x" + emoji.charAt(1));
if ((xmoji == 8) || (xmoji == 9) || (xmoji == 14) || (xmoji == 15)) {
moji = moji + str.charAt(i + 1);
i++;
}
if (pos == len) {
break;
}
len++;
}
return (moji);
}
}


// -->
</SCRIPT>
<TITLE>テストのページ</TITLE>
</HEAD>
<BODY>
<FORM ACTION="hoge.cgi" METHOD="GET" NAME="MyForm">
<INPUT TYPE="TEXT" VALUE="" NAME="NUMBER">
<INPUT TYPE="BUTTON" VALUE="submit" onClick="check(MyForm);">
<INPUT TYPE="RESET" VALUE="clear">
</FORM>
</BODY>
</HTML>

ポケ鬼!! 1999/03/15(月) 19:11:52
ゴミが残ってました、、、(;;)

function check(obj)
{

}

これは不要でし。

たこすけ 1999/03/15(月) 20:07:22
ポケ鬼!! さんのフォーム部分をお借りして
----------------------------------------
function check(obj)
{
var check = obj.NUMBER.value;
var check2 = obj.NUMBER.value * 0;

if(obj.NUMBER.value==""){
alert("入力がありません。");
}else if(check.indexOf(".")!=-1){
alert("数字以外の文字が含まれています。");
}else if(check2==0){
obj.submit();
}else{
alert("数字以外の文字が含まれています。");
}
}
----------------------------------------
というのはどうでしょう?
IE4とNC4では動作しました。

andi 1999/03/16(火) 02:12:03
isNaNっつー、数値かどうか調べてくれるのを見つけました。
同様にフォーム部分をお借りして。

function check(obj){
var check = obj.NUMBER.value;
if(check == ""){
alert("入力がありません。");
}else if(isNaN(check)){
alert("数字以外の文字が含まれています。");
}else{
obj.submit();
}
}

IE4,NS4で確認しましたが、物の本には他のブラウザで
エラーが出ると書いてあったので、

function check(obj){
var check = obj.NUMBER.value;
if(check == ""){
alert("入力がありません。");
}else if(parseFloat(check)){
obj.submit();
}else{
alert("数字以外の文字が含まれています。");
}
}

だと良いかもです。好きな方で。

ポケ鬼!! 1999/03/16(火) 02:26:36
なるほど。
徹底的に文字コードで調べようとしたら・・・便利な関数もあるんですね。

たこすけ 1999/03/16(火) 09:30:05
"isNaN()"て、もう普通に使えるんですね。
私の持ってる本には"isNan()"と書いてあって
UNIXのネスケのみ対応でした(らしい)
#それとも全く別の関数なのかな?

"."や"+"を許可するかは使う人しだいって感じで
#しかし質問者の意図が文字列の中で数字が使われていた場合
#それが全角だったらアラートを出したいとかだったらどうしよう。

[上に] [前に] [次に]