• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ある条件での必須入力について)

必須入力条件の設定方法について

このQ&Aのポイント
  • ある条件が適用されると、指定の項目を必須入力にしたいです。具体的には、「対応状況」の項目が「対応済」になったら、「対応完了日時」を必須入力にしたいです。
  • 「対応状況」は、「対応中」と「対応済」の2つが選択肢で、submitを行った際に判定を行います。もし「対応状況」が「対応中」の場合は、「対応完了日時」は必須入力にしません。
  • しかし、「対応状況」が「対応済」になってsubmitした際に、「対応完了日時」が未入力の場合はエラーを出したいと考えています。クライアント側でHTMLとJavaScriptを使用して実装しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.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>

taka78ube
質問者

お礼

再度ご回答ありがとうございます。 非常に勉強になりました。 補足に記載していただいた内容で、バッチリできました。 お忙しい中ご回答いただき、ありがとうございました。

その他の回答 (2)

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.2

最近のブラウザなら - 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>

taka78ube
質問者

補足

コードを見させていただいたのですが、理解できているようなできないような気がします。 実際の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> このような場合は、コードはどうなりますでしょうか。 ほんとに他人任せですいません。

回答No.1
taka78ube
質問者

お礼

ご回答ありがとうございます。 調べると出てくるものですね。 私の調べ方が悪かったんだと思います。 教えていただいたURLを見て、勉強します。 ありがとうございました。

関連するQ&A