jquery.validate.jsを使ってフォームを作成しています。
チェックしないとエラー文が出るラジオボタンを設置したいのですが、うまく動いてくれません。
jquery.validate.jsのバージョンは1.9.0を使っています。
https://github.com/jquery-validation/jquery-validation/releases/tag/1.9.0
HTMLは
<table id="formtable"> <tr> <th class="f_th">投稿 <span class="req">必須</span></th> <td class="f_td"> <p>質問文</p> <input type="radio" name="radio" value="はい" id="yes_"><label for="yes_" class="label"> はい</label> <input type="radio" name="radio" value="いいえ" id="no_"><label for="no_" class="label"> いいえ</label> <div id="return_a"></div> </td> </tr> </table> <div id="button"><a href="javascript:void(0);">送信</a></div>
JSは
$('#button a').click( function(){ if(checkForm()){ $("#form").submit() }}); $.validator.addMethod( "regex", function(value, element, regexp) { var re = new RegExp(regexp); return this.optional(element) || re.test(value); }, "Please check your input." ); $("#form").validate({ rules : { radio: {required: true} }, messages: { radio : { required : "選択してください" } }, errorPlacement: function(error, element) { if(element.is(':radio')) { error.appendTo(element.parent()); } else{ error.insertAfter(element); } } }); });
としています。
試したこと
・rulesの方のradioにminlengthを指定
・radioを'radio[]'に書き換え
・最後のerrorPlacement〜を#return_aに結果が書き込まれるように変更
以上になります。
※<div id="return_a"></div>はエラー文が出る場所として作成
チェックボックスのやり方はたくさん出てくるのにラジオボタンについてはほとんど指南サイトが出て来ず困っています。
当方、つい昨日[let][const]を学んだくらいの知識量しか持っていません、わかりやすく教えていただけるととても助かります。
どうぞよろしくお願いいたします。
教えていただいた文をコピペさせていただき、現在はこのような状態になっています。
HTML
<table id="formtable"> <form id="form" enctype="multipart/form-data" onsubmit="return checkSubmit();"> <tr> <th class="f_th">投稿 <span class="req">必須</span></th> <td class="f_td"> <p>質問/p> <input type="radio" name="radio" value="はい" id="yes_"><label for="yes_" class="label"> はい</label> <input type="radio" name="radio" value="いいえ" id="no_"><label for="no_" class="label"> いいえ</label> <div id="return_a"></div> <!--<label for="yes_" class="label"><input type="radio" name="radio" value="はい">はい</label><br> <label for="no_" class="label"><input type="radio" name="radio" value="いいえ">いいえ</label><br>--> </td> </tr> <!-- <input type="button" name="button" id="button" value="送信する" onclick="return checkForm();">--> <!--<div id="button"><p class="line_m">送信する</p></div>--> <div id="button"><a href="javascript:void(0);">送信する</a></div> <!-- <div id="button"><a href="#">投稿</a></div> --> </div> </form>
JS
//$(function(){ // $('#button a').click( // function(){ // if(checkForm()){ // $("#form").submit() // }}); $(function(){ $('#button a').on('click',function(e){ e.preventDefault(); if($('[name=radio]:radio:checked').length>0){ $('#form').trigger('submit'); } }); $.validator.addMethod( "regex", function(value, element, regexp) { var re = new RegExp(regexp); return this.optional(element) || re.test(value); }, "Please check your input." ); $("#form").validate({ rules : { radio: {required: true} }, messages: { radio : { required : "選択してください" } }, errorPlacement: function(error, element) { if(element.is(':radio')) { error.appendTo(element.parent()); } else{ error.insertAfter(element); }