【问题标题】:How do I reset / disable radio buttons when text input ('Other') is selected?选择文本输入(“其他”)时如何重置/禁用单选按钮?
【发布时间】:2020-05-12 06:50:46
【问题描述】:

我有一个表单供用户选择:“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>

但是,我希望在用户单击“其他”字段时重置或禁用单选框,这样用户就不会感到困惑。我怎样才能做到这一点?因此,如果用户单击单选按钮,文本输入字段也会被重置。我看了几页,但没有帮助。在此先感谢:)

【问题讨论】:

    标签: html forms button input radio


    【解决方案1】:

    您可以使用一些 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>

    【讨论】:

    • 这会清除所有单选按钮的值吗?因为我有更多的选择
    • 我更新了解决方案,它现在只会删除名称为 paymentperiod 的收音机。如果对您有用,请接受答案。
    • 您更新的答案会导致所有单选按钮重置
    • 这很奇怪..因为我的一直在重置。我已经在我的帖子中添加了不断重置的单选按钮.. 请看一下
    • 它只重置 name = paymentperiod 的输入。再次检查 sn-p,您会看到我添加了另一个名称不同的单选按钮,并且该单选按钮不会被重置。当按下收音机时,我还添加了擦除其他输入框
    【解决方案2】:

    您好,您可以在这里使用 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>
    

    【讨论】:

    • 太好了。如果这对您有用,请接受答案,以便其他人知道它有效
    猜你喜欢
    • 1970-01-01
    • 2017-02-04
    • 2021-09-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2021-09-10
    相关资源
    最近更新 更多