<!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_] と書き換えます。詳しくは正規表現の説明になってしまうためここでは割愛します。