- ベストアンサー
フォームのチェックについて
- フォームの送信ボタンを押すとチェックする関数を作成しています。
- 名前、フリガナ、メールアドレス、ご質問内容の入力チェックを行っています。
- メールアドレスのチェックと文字数のチェックが連続で通ってしまう問題が発生しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
もうひとつですが、flagの判定は不要だと思います。 あと、フォームチェック関数作成してみました。 function restChar() { if(navigator.appName == "Netscape"){// ブラウザ名取得 Num = document.F1.ご質問内容.value.length / 2; // NetScape では全角1文字を2文字として数える if ((document.F1.ご質問内容.value.length % 2) != 0) { Num += 1; } } else { Num = document.F1.ご質問内容.value.length; // IE では全角1文字を1文字として数える } if(5000 < Num)){ window.alert("ご質問内容は全角5,000字以内でお願いします"); } } function check(){ var flag = 0; if(document.F1.name.value == ""){ // 「お名前」の入力をチェック window.alert('お名前を入力してください'); // 入力漏れがあれば警告ダイアログを表示 return false; // 送信を中止 } else if(document.F1.kana.value == ""){ // 「パスワード」の入力をチェック window.alert('フリガナを入力してください'); // 入力漏れがあれば警告ダイアログを表示 return false; // 送信を中止 } else if(document.F1.mail.value == ""){ // 「コメント」の入力をチェック window.alert('メールアドレスを入力してください'); // 入力漏れがあれば警告ダイアログを表示 return false; // 送信を中止 } else if(document.F1.ご質問内容.value == ""){ // 「コメント」の入力をチェック window.alert('ご質問内容を入力して下さい'); // 入力漏れがあれば警告ダイアログを表示 return false; // 送信を中止 } check = /.+@.+\..+/; if (!document.F1.mail.value.match(check)){ window.alert("メールアドレスが正しくありません"); return false; // 送信を中止 } if(navigator.appName == "Netscape"){// ブラウザ名取得 Num = document.F1.ご質問内容.value.length / 2; // NetScape では全角1文字を2文字として数える if ((document.F1.ご質問内容.value.length % 2) != 0) { Num += 1; } } else { Num = document.F1.ご質問内容.value.length; // IE では全角1文字を1文字として数える } if(5000 < Num)){ window.alert("ご質問内容は全角5,000字以内でお願いします"); return false; // 送信を中止 } return true; // 送信を実行 } これでどうですか?
その他の回答 (1)
- googoo131
- ベストアンサー率45% (5/11)
はじめまして。 (1) 入力チェックにおいては以下のサイトを参考にしてみた方がいいかと思います。 http://f32.aaa.livedoor.jp/~azusa/index.php?p=formcheck&t=js (2) 解析してみたところ、ご質問内容の入力数判定においてはまずブラウザの判定が必要です。 NetScape では全角1文字を2文字、IEでは全角1文字を1文字として数えるようになっております。 とすると、restChar 関数、check 関数ともご質問内容入力判定部分のコードは以下のようにしなければなりません。 fOBJ = document.F1.ご質問内容.value.length; BROW = navigator.appName; // ブラウザ名取得 if(BROW == "Netscape"){ fOBJ /= 2; // NetScape では全角1文字を2文字として数える } if(5000 < fOBJ)){ window.alert("ご質問内容は全角5,000字以内でお願いします"); return false; // 送信を中止 } return true; // 送信を実行 } 参考URLはこちらです。 http://www.umechando.com/tips/10.htm