选择文本输入(“其他”)后,如何重置/禁用单选按钮?

时间:2020-01-26 19:27:06

标签: html forms button input radio

我有一个表单,用户可以在其中选择:“ 7天”,“ 14天”,“ 30天”和文本输入字段“其他”:

<div class="form-group">
          <label for="paymentperiod">Payment period</label>
          <div class="col-5">
        <div class="radio">
              <label><input type="radio" name="paymentperiod" formControlName="paymentperiod" value="week" >7 days </label>
        </div>
        <div class="radio">
          <label><input type="radio" name="paymentperiod"  formControlName="paymentperiod" value="tweeweken">14 days</label>
        </div>
        <div class="radio">
          <label><input type="radio" name="paymentperiod" formControlName="paymentperiod" value="vierweken" >30 days</label>
        </div>

      </div>
      <div class="col-5">
        Other:
        <input  [ngClass]="{'is-invalid': (form.controls.paymentperiod.errors && form.controls.paymentperiod.dirty), 'is-valid': !form.controls.paymentperiod.errors}"
                id="paymentperiod"  class="form-control" type="text" name="paymentperiod" autocomplete="off" placeholder="Other" formControlName="paymentperiod"/>
        <ul class="help-block">
          <li *ngIf="form.controls.paymentperiod.errors?.required && form.controls.paymentperiod.dirty">This field is required</li></ul>

      </div>
    </div>


<div class="form-group">
  <label for="kmfacturatie">kmfacturatie</label>
  <div class="col-5">
    <div class="radio">
      <label><input type="radio" name="kmfacturatie" formControlName="kmfacturatie" value="ja" >true</label>
    </div>
    <div class="radio">
      <label><input type="radio" name="kmfacturatie"  formControlName="kmfacturatie" value="nee">false</label>
    </div>
  </div>
</div>

但是,我希望在用户单击“其他”字段时重置或禁用单选框,以免使用户感到困惑。我该如何实现?因此,如果用户单击单选按钮,则文本输入字段也会重置。我看了几页,但没有帮助。在此先感谢:)

2 个答案:

答案 0 :(得分:2)

您可以使用一些JavaScript来做到这一点。

function reset(){

let radios = document.getElementsByClassName('radio');
   for(var i = 0; i< radios.length;i++){
      let input = radios[i].getElementsByTagName('input');
      
      if(input[0].name === 'paymentperiod')input[0].checked = false;
   
   }
}

function reset2(){

 document.getElementById('paymentperiod').value = '';

}
<div class="form-group">
          <label for="paymentperiod">Payment period</label>
          <div class="col-5">
        <div class="radio">
              <label><input type="radio" name="paymentperiod" formControlName="paymentperiod" value="week" onclick='reset2()' >7 days </label>
        </div>
        <div class="radio">
          <label><input type="radio" name="paymentperiod"  formControlName="paymentperiod" value="tweeweken" onclick='reset2()'>14 days</label>
        </div>
        <div class="radio">
          <label><input type="radio" name="paymentperiod" formControlName="paymentperiod" value="vierweken" onclick='reset2()'>30 days</label>
        </div>

      </div>
      <div class="col-5">
        Other:
        <input  onclick='reset()'[ngClass]="{'is-invalid': (form.controls.paymentperiod.errors && form.controls.paymentperiod.dirty), 'is-valid': !form.controls.paymentperiod.errors}"
                id="paymentperiod"  class="form-control" type="text" name="paymentperiod" autocomplete="off" placeholder="Other" formControlName="paymentperiod"/>
        <ul class="help-block">
          <li *ngIf="form.controls.paymentperiod.errors?.required && form.controls.paymentperiod.dirty">This field is required</li></ul>

      </div>
    </div>


<div class="form-group">
  <label for="kmfacturatie">kmfacturatie</label>
  <div class="col-5">
    <div class="radio">
      <label><input type="radio" name="kmfacturatie" formControlName="kmfacturatie" value="ja" >true</label>
    </div>
    <div class="radio">
      <label><input type="radio" name="kmfacturatie"  formControlName="kmfacturatie" value="nee">false</label>
    </div>
  </div>
</div>

答案 1 :(得分:1)

您好,您可以在这里使用Jquery来实现它的完美代码,我可以尝试一下 您需要将jquery库放在html页面的同一文件夹中

<div class="form-group">
  <label for="paymentperiod">Payment period</label>
  <div class="col-5">
    <div class="radio">
      <label><input type="radio" name="paymentperiod" formControlName="paymentperiod" value="week" class="boutton">7
        days </label>
    </div>
    <div class="radio">
      <label><input type="radio" name="paymentperiod" formControlName="paymentperiod" value="tweeweken"
          class="boutton">14 days</label>
    </div>
    <div class="radio">
      <label><input type="radio" name="paymentperiod" formControlName="paymentperiod" value="vierweken"
          class="boutton">30 days</label>
    </div>

  </div>
  <div class="col-5">
    Other:
    <input
      [ngClass]="{'is-invalid': (form.controls.paymentperiod.errors && form.controls.paymentperiod.dirty), 'is-valid': !form.controls.paymentperiod.errors}"
      id="paymentperiod" class="form-control" type="text" name="paymentperiod" autocomplete="off" placeholder="Other"
      formControlName="paymentperiod" />
    <ul class="help-block">
      <li *ngIf="form.controls.paymentperiod.errors?.required && form.controls.paymentperiod.dirty">This field is
        required</li>
    </ul>

  </div>
</div>


<div class="form-group">
  <label for="kmfacturatie">kmfacturatie</label>
  <div class="col-5">
    <div class="radio">
      <label><input type="radio" name="kmfacturatie" formControlName="kmfacturatie" value="ja">true</label>
    </div>
    <div class="radio">
      <label><input type="radio" name="kmfacturatie" formControlName="kmfacturatie" value="nee">false</label>
    </div>
  </div>
</div>
<script src="jquery-3.2.1.js"></script>
<script>
  $(document).ready(function () {
    $(".form-control").focus(function () {
      $(".boutton").attr("disabled", true);
    });
    $(".form-control").blur(function () {
      $(".boutton").attr("disabled", false);
    });
  });
</script>