テキストボックスに数値だけが入力された場合のみ送信

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
    <meta http-equiv="Content-Script-Type" content="text/javascript">
    <title>正規表現テスト</title>
<script language="javascript" type="text/javascript">
<!--
function check(a){
    //テキストボックスの文字を取得
    var str = a.elements[0].value;
    //正規表現で半角数字のみ
    var r = new RegExp("[0-9]{" + str.length + ",}");
    //全て半角数字かチェック
    var jadge = r.test(str);
    if (jadge) {
        //OKならサブミット
        a.submit();
    }else{
        //半角数字以外を使っていたらアラートを出す
        alert("半角数字のみで入力して下さい。");
    }
}
//-->
</script>
</head>
<body>
    <form action="***.html" method="post" enctype="text/plain">
        <input type="text" name="text">
        <input type="button" value="送信" onclick="check(this.form)">
        <div>半角数字で入力して下さい。</div>
    </form>
</body>
</html>

使用例
ソース中の elements[0].value は「一番目の要素の value 」という意味です。
そのため、もし form 中に入力項目がいくつかあって、チェックをかけたい項目が3番目の要素だった場合は
この部分を elements[2].value に書き換える必要があります。

半角数字で入力して下さい。
クリックした箇所の this.form でアクセスするので、form の id 属性や name 属性を使用しないところが売りです。
(よく見受けられる form の name 属性でアクセスする方法は、環境に依存するところが大きいので、使用しない方が無難です。)
form が複数あっても問題ありません。
数字チェックではなく、例えば半角英字と記号の " _ " のみ許可する場合には、正規表現の
[0-9] の部分を [a-zA-Z_] と書き換えます。詳しくは正規表現の説明になってしまうためここでは割愛します。

ご意見・ご指摘等ございましたらお願い致します。(雑記帳へ
ホームページへ戻る