- ベストアンサー
必須入力条件の設定方法について
- ある条件が適用されると、指定の項目を必須入力にしたいです。具体的には、「対応状況」の項目が「対応済」になったら、「対応完了日時」を必須入力にしたいです。
- 「対応状況」は、「対応中」と「対応済」の2つが選択肢で、submitを行った際に判定を行います。もし「対応状況」が「対応中」の場合は、「対応完了日時」は必須入力にしません。
- しかし、「対応状況」が「対応済」になってsubmitした際に、「対応完了日時」が未入力の場合はエラーを出したいと考えています。クライアント側でHTMLとJavaScriptを使用して実装しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2 の補足に対して 属性 required を使っているので、HTML5 で回答します アレ = ある条件、の対象となるタグ コレ = 指定の項目、のタグ とすれば、 var form = document.forms[アレとコレを含むフォームのname] form.elements[アレのname].addEventListener('change', createHandler(条件を満たすアレのvalue, コレのname), false); なので、 var form = document.forms['form01'] form.elements['jyoukyou'].addEventListener('change', createHandler('対応済', 'syuuryoubi'), false); それはそうと 誤: <option value="..."/> ... </option> 正: <option value="..."> ... </option>
その他の回答 (2)
- Ogre7077
- ベストアンサー率65% (170/258)
最近のブラウザなら - HTML5 の場合 <script>window.addEventListener('DOMContentLoaded', function(ev){ var form = document.forms['alpha']; function createHandler(value, reqName) { return function(ev){form.elements[reqName].required = (ev.target.value == value)}; } form.elements['ca'].addEventListener('change', createHandler('x', 'cb'), false); form.elements['sa'].addEventListener('change', createHandler('b', 'sb'), false); }, false)</script> <form name=alpha action=confirm.html><ul> <li> <input name=ta type=text required> <li> <input name=ca type=checkbox value=x> <input name=cb type=text> <li> <select name=sa><option value=a>対応中<option value=b>対応済</select> <input name=sb type=text> <li> <button type=submit>ok</button> </ul></form> 古いブラウザも考慮するなら - jQuery の場合 以下を利用します http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.0/jquery.validate.min.js <script src="jquery.min.js"></script> <script src="jquery.validate.min.js"></script> <script>$(function(){ var form = $('form[name="beta"]'); form.validate({ rules:{ 'ta': 'required', 'cb': { required:{ depends:function(){return form.find('*[name="ca"]').is(':checked')} } }, 'sb': { required:{ depends:function(){return form.find('*[name="sa"]').val() == 'b'} } } } }); })</script> <style>label.error { color:red; font-weight:bold; }</style> <form name=beta action=confirm.html><ul> <li> <input name=ta type=text > <li> <input name=ca type=checkbox value=x> <input name=cb type=text> <li> <select name=sa><option value=a>対応中<option value=b>対応済</select> <input name=sb type=text> <li> <button type=submit>ok</button> </ul></form>
補足
コードを見させていただいたのですが、理解できているようなできないような気がします。 実際のform部分はこのようになっています。 <form action = "sagyoutouroku.asp" method="POST" name="form01"> <input type="text" name="syuuryoubi"id="syuuryoubi" style="width:100%" rows=1 class="textbox" value="<%=Rs("作業終了日")%>"> <select name="jyoukyou" id="jyoukyou" required> <option value=""/>---対応情報選択---</option> <option value="対応中"/>対応中</option> <option value="対応済"/>対応済</option> </select> <input type="submit" value="作業内容登録"> </form> このような場合は、コードはどうなりますでしょうか。 ほんとに他人任せですいません。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
いっぱい出てきますよ。 http://www.tagindex.com/javascript/form/check6.html http://www.red.oit-net.jp/tatsuya/java/Fblink.htm http://www.pori2.net/js/kihon/4.html http://itmemo.net-luck.com/javascript-button-submit/
お礼
ご回答ありがとうございます。 調べると出てくるものですね。 私の調べ方が悪かったんだと思います。 教えていただいたURLを見て、勉強します。 ありがとうございました。
お礼
再度ご回答ありがとうございます。 非常に勉強になりました。 補足に記載していただいた内容で、バッチリできました。 お忙しい中ご回答いただき、ありがとうございました。