HOME > jQuery > jQueryでメールフォームをバリデーション

jQueryでメールフォームをバリデーション

<form action="" method="post">
    <table>
        <tr>
        <th>お名前<span>※</span></th>
        <td><input type="text" name="name" size="80" class="required" /></td>
        </tr>
        <tr>
        <th>電話番号<span>※</span></th>
        <td><input type="text" name="tel" size="80" class="required valNumber" /></td>
        </tr>
        <tr>
        <th>メールアドレス<span>※</span></th>
        <td><input type="text" value="" size="80" name="valMail" class="required valMail"/></td>
        </tr>
        <tr>
        <th>メールアドレス 確認<span>※</span></th>
        <td><input type="text" value="" size="80" name="valMail_check" class="required valMail valMail_check"/></td>
        </tr>
        <tr>
        <th>年齢<span>※</span></th>
        <td>
		<select name="age" class="required">
		<option value="" selected>選択してください</option>
		<option value="10~19歳">10~20歳</option>
		<option value="20~29歳">20~29歳</option>
		<option value="30~39歳">30~39歳</option>
		<option value="40~49歳">40~49歳</option>
		<option value="50~59歳">50~59歳</option>
		<option value="60~69歳">60~69歳</option>
	</select></td>
        </tr>
        <tr>
        <th>性別<span>※</span></th>
        <td>
        <ul class="radiobtnRequired">
        <li><input type="radio" value="男性" name="gender" id="man" class="required" /><label for="man">男性</label></li>
        <li><input type="radio" value="女性" name="gender" id="woman" /><label for="woman">女性</label></li>
        </ul></td>
        </tr>
        <tr>
        <th>お問い合わせ内容<span>※</span></th>
        <td>
        <ul class="checkboxRequired">
        <li><input type="checkbox" name="checkedQuestion" id="checkedQuestion" value="質問" /> <label for="checkedQuestion">質問</label></li>
        <li><input type="checkbox" name="checkedOffer" id="checkedOffer" value="取材申込" /> <label for="checkedOffer">取材申込</label></li>
        <li><input type="checkbox" name="checkedEtc" id="checkedEtc" value="その他" /> <label for="checkedEtc">その他</label></li>
        </ul></td>
        </tr>
        <tr>
        <th>メッセージ欄</th>
        <td><textarea id="inquiry" name="inquiry"rows="10" cols="60"class="validate"></textarea></td>
        </tr>
    </table>
    <p class="btn"><input type="submit" value="送信" /></p>
</form>
$(function(){
    $("form").submit(function(){
    
        //エラーの初期化
        $("span.error").remove();
        
        $(":text,textarea,select").each(function(){
            
            //必須項目のチェック
            $(this).filter(".required").each(function(){
                if($(this).val()==""){
                    $(this).after("必須項目です")
                }
            })
            
            //数値のチェック
            $(this).filter(".valNumber").each(function(){
                if(isNaN($(this).val())){
                    $(this).after("半角数字だけで入力してください")
                }
            })
            
            //メールアドレスのチェック
            $(this).filter(".valMail").each(function(){
                if($(this).val() && !$(this).val().match(/.+@.+\..+/g)){
                    $(this).after("メールアドレスの形式が異なります")
                }
            })
            
            //メールアドレス確認のチェック
            $(this).filter(".valMail_check").each(function(){
                if($(this).val() && $(this).val()!=$("input[name="+$(this).attr("name").replace(/^(.+)_check$/, "$1")+"]").val()){
                    $(this).after("メールアドレスが異なります")
                }
            })
            
        })
        
        //ラジオボタンのチェック
        $(".radiobtnRequired input").each(function(){
            $(this).filter(".required").each(function(){
                if($("input[name="+$(this).attr("name")+"]:checked").size() == 0){
                    $(".radiobtnRequired").after("選択してください")
                }
            })
        })
        
        //チェックボックスのチェック
        $(".checkboxRequired").each(function(){
            if($(":checkbox:checked",this).size()==0){
                $(this).after("選択してください")
            }
        })
        
        //エラーの際の処理
        if($("span.error").size() > 0){
                $('html,body').animate({ scrollTop: $("span.error:first").offset().top-40 }, 'slow');
                return false;
        }
    })

   //入力したらエラーメッセージを消す
   $(".required").on('blur', function() {
      $(".required").each(function(){
         if(!$(this).val()==""){
            $(this).next('span.error').remove();
            $(.radiobtnRequired).next('span.error').remove();
            $(.checkboxRequired).next('span.error').remove();
        }
      })

   });
})

サンプル

お名前
電話番号
メールアドレス
メールアドレス 確認
年齢
性別
お問い合わせ内容
メッセージ欄

参考にしたサイト