如果选择单选按钮需要输入字段

if radio button is selected require the input field

我哪里做错了?

我有 2 个单选按钮。 必选其一。

如果用户选择第一个并提交表单,那么信息应该发送给我。 这很好用。

如果用户选择了第二个单选按钮,则还需要填写两个输入字段,并且表单应该无法 send/submit。 不知何故,这个不起作用。 数据即将到来,但如果我不填写这些必填字段,它仍然会通过。

你能帮帮我吗?

<div>
<p><b>Please choose</b></p>

  <br>

  <p>
    <input type="radio" name="mypuboption" id="myoneyear" tabindex="9" required value="one year" onclick="myFunctionyear(); document.getElementById('mypubweek').removeAttribute('disabled')">
    <br>1 year
  </p>

  <br>

  <p>
    <input type="radio" name="mypuboption" id="myownyear" tabindex="10" required value="own year" onclick="myFunctionyear(); myweekselection(); document.getElementById('mypubweek').removeAttribute('disabled')">
    <br>own year
  </p>

  <p id="mypubweek" style="display:none;" align="center">
    <br>
    <input type="week" class="form-control" id="mypubstart" name="mypubstart" tabindex="11" style="width:180px; margin:auto;">
    <br>
    <select id="myownweek" name="myownweek" tabindex="12" style="width:180px; height:34px; border-radius:5px; border-color:#D1D1D1;">
      <option value="">choose</option>
      <option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option>
      <option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option>
      <option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option>
      <option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option>
      <option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option>
      <option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option>
      <option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option>
      <option value="29">29</option><option value="30">30</option><option value="31">31</option><option value="32">32</option>
    </select>
  </p>

  <script>
    function myFunctionyear() {
      var checkBox = document.getElementById("myownyear");
      var text = document.getElementById("mypubweek");
      if (checkBox.checked == true){
        text.style.display = "block";
      } else {
        text.style.display = "none";
      }
    }
  </script>

  <script>
    $(function myweekselection () {
      $('input[id="myownyear"]').change(function () {
        if($(this).val() === 'value') {
          $('#myownweek').attr('required', true);
        } else {
          $('#myownweek').removeAttr('required');
        }
      });
    });
  </script>
</div>

将输入设置为必需用于 .prop 而不是 .attr。此外,所有这些功能都不需要根据点击来触发,只需检测单选按钮的变化即可。

$("input[type='radio']").on("change", function(){
   if($('#secondInput').is(':checked')){
    $("input[type='text']").show();
    $("input[type='text']").prop('required',true);
  } else {
    $("input[type='text']").hide();
    $("input[type='text']").prop('required',false);
  }
});
input[type="text"] {
  display:none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>

  1<input type="radio" name="rad" value="1" required> 
  2<input type="radio" id="secondInput" name="rad" value="2">
  <input type="text">
  <input type="text">

  <button type="submit">Submit</button>
</form>