【问题标题】:Angular Template driven form, button enable and disabled with DropdownAngular 模板驱动的表单,按钮启用和禁用下拉
【发布时间】:2022-01-03 20:36:40
【问题描述】:

我们以角度创建了模板驱动的表单,我在表单中使用了按钮禁用,当我的表单无效时,应该禁用按钮,如果表单有效,则应该启用按钮。当我在输入字段中输入数据并从 Engine Number 或 Chassis Number 下拉列表中选择值时,该按钮保持禁用状态。请建议我应该怎么做。

component.html

<div class="motor-policy-container">
  <form 
    #motorForm="ngForm" 
    (ngSubmit)="registerMotorPolicy(motorForm.value, motorForm.valid)"
  >
    <label>Policy</label>
    <div>
      <input 
        class="input-box" 
        name="policy_number" 
        #motorpolicy_number="ngModel" 
        oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" 
        maxlength="20" 
        type="number" 
        placeholder="Enter policy number" 
        ngModel required
      />
    </div>
    <small 
      class="validation-error" 
      [hidden]="motorpolicy_number.valid || (motorpolicy_number.pristine && !motorForm.submitted)"
    >
      Policy number required.
    </small>
    <br>
    <select 
      id="motorDropdown" 
      name="motorNumber" 
      (change)="setValue($event.target.value)" 
      class="select-policy select-policy-dropdown"
    >
      <option value="vehicleNumber">Vehicle Registration Number</option>
      <option value="engineNumber">Engine Number</option>
      <option value="chassisNumber">Chassis Number</option>
    </select>
    <br>
    <div class="input-container">
      <input 
        class="input-box" 
        (input)="setMotorValue()" 
        oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" 
        id="vehicleNumber" 
        name="vehicleNumber" 
        placeholder="Vehicle Registration Number" 
        maxlength="20" 
        type="text" 
        ngModel required 
      />
    </div>
    <br>
    <div class="terms-container">
      <input 
        type="checkbox" 
        id="checkbox-1-3" 
        name="motor-terms" 
        #motor_terms="ngModel"  
        class="regular-checkbox" 
        ngModel required
      />
      <label for="checkbox-1-3"></label>
      <span>I have read the <a href="#" class="condition">Terms and Conditions</a> and agree to abide by the same.</span> 
      <br/>
      <small 
        class="validation-error" 
        [hidden]="motor_terms.valid || (motor_terms.pristine && !motorForm.submitted)"
      >
        Please accept terms and conditions
      </small>
    </div>
    <button 
      class="sbmt-btn" 
      type="submit" 
      [disabled]="!motorForm.valid || !motor_terms"
    >
      Submit
    </button>
  </form>
</div>

组件.ts

setValue(val){
  this.motorType = val;
}

setMotorValue(val){
  this.motorValue = val;
}



【问题讨论】:

    标签: javascript reactjs angular


    【解决方案1】:

    对于按钮,您有[disabled]="!motorForm.valid || !motor_terms",在我看来,您实际上想要检查[disabled]="!motorForm.valid || !motor_terms.valid"

    【讨论】:

    • 我们希望当我们在输入字段中输入数据并从下拉列表中选择值并单击复选框之后,我们的禁用按钮应该启用但我的表单按钮未启用我们无法做到这一点。请协助,我们需要在表单内进行更改。
    • 您是否尝试按照我的建议更改禁用检查?您确实有 [hidden]="motor_terms.valid... 作为对该元素可见性的检查,因此 !motor_terms.valid 是您实际需要的值。
    • 根据您的建议,我们已经更改了代码,但我们仍然将数据输入到输入字段中,当我们从下拉列表中选择值并选中复选框,然后我们表单的按钮保持禁用状态。请您通过编写代码来分享示例,以便我们理解。
    • 静止按钮被禁用,当我在输入字段中输入数据并从下拉列表中选择引擎编号或底盘编号并选中复选框时,该按钮仍处于禁用状态。当所有条件都成功时,请帮助我,按钮应该启用。
    猜你喜欢
    • 2019-03-08
    • 2020-09-06
    • 2020-10-18
    • 2017-07-12
    • 2021-09-29
    • 2020-04-07
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多