超手抜き。
var ErrorMessages = {
'namae01' : 'お名前もしくは会社・組織名が入力されていません',
'kana01' : 'ふりがなが入力されていません',
'zip01' : '郵便番号が入力されていません',
'zip02' : '都道府県が選択されていません',
'zip03' : '郡市区、町名・番地が入力されていません',
'tel' : '電話番号が入力されていません',
'mail' : 'メールアドレスが入力されていません',
'check1' : '規約に同意の上、チェックして下さい'
};
function checkIn (form) {
var name, c;
for (var name in ErrorMessages)
if (c = form.elements[name])
if (c.type == 'text' && c.value == '' || c.type == 'checkbox' && ! c.checked)
return Boolean (alert (ErrorMessages[name]) || c.focus ());
return true;
}<form action="#" onsubmit="return checkIn (this); ">
改造ポイント:
・上記ではデフォルトが送信可だが、本来ならデフォルトは送信不可にすべき。まあ、どうせサーバ側で再チェックするだろうけど。
・はっきり言って alert() は鬱陶しいし、誤操作のもとになる。別の警告手段を考えた方が良い。
>>1
召喚されてしまった。以下ただの雑談
form 要素というよりはコントロールの参照の方ね。以前別所で「PHP で出力した <input name="var[]"> を JavaScript から参照できない」という質問が頻発したので、省略形しか教えないサンプルは使い物にならないと判断した。
それよりも、script 要素に type 属性がないことを、俺は厳重に注意する。HTML の基本ルールを知らない証拠だから。HTML の基本ルールを知らずに、HTML を操作するプログラムを書けるとは思えない。だから「今どき language 属性なんて書いているサンプルは信用するな」と、俺はいつも言っている。
# つか、基本的に他人が書いたコードは信用するな、が正解なのかもしれない。もちろん、俺のも含めて、ね。
# まあ、たぶん 10 年後ぐらいには「今どき type="text/javascript" なんて書いているサンプルは使うな、application/javascript だ」と言ってることだろう(text/javascript は RFC 4329 で廃止)。