【问题标题】:ng-disabled not working for multiple inputsng-disabled 不适用于多个输入
【发布时间】:2017-10-25 03:37:41
【问题描述】:

我有以下html表单

<form name="enviarAutorizacao" id="enviarAutorizacao" novalidate>
  <label class="form-label-gray">autorization</label>
  <input class="form-control col-sm-6" ng-model="current.autorizacao" id="autorizacao" ui-mask="" maxlength="20" required>
  <div class="form-group col-sm-8">
    <label class="form-label-gray"> Value </label>
    <div class="form-group col-sm-2 form-label-gray">
      <label>$</label>
    </div>
    <div class="form-group col-sm-9">
       <input class="form-control" maxlength="16" ng-model="current.valor" required id="valor">
    </div>
  </div>
  <div class="form-group col-sm-12">
    <button class="btn btn-default" ng-disabled="enviarAutorizacao.$invalid || enviarAutorizacao.$pristine" id="submit-representante-estabelecimento" ng-click="validateAssociate()">click me</button>
  </div> 
</form>

我正在尝试启用提交按钮,仅在填充 2 个输入时启用,但当我在第一个输入 (autorizacao) 上键入时它正在启用。

我尝试了一些替代方案,例如将“ng-disabled="enviarAutorizacao.$invalid" 更改为“ng-disabled="!enviarAutorizacao.$valid",但没有奏效。

这个 html 有什么问题?

【问题讨论】:

  • 在这里工作正常:plnkr.co/edit/7e3hQIaEQ7n4n3PPJNdC?p=preview。所以我的猜测是 ui-mask 指令做错了。
  • @JBNizet 我试图删除 ui-mask,但仍然无法正常工作。 ://
  • 在 plunkr 中发布一个完整的最小示例来重现该问题。如您所见,我确实复制并粘贴了您发布的代码,但无法重现该问题。
  • 它工作得很好。仅当用户在两个输入上都键入时,才会启用该按钮。

标签: html angularjs


【解决方案1】:

如果您使用enviarAutorizacao.autorizacao.$invalid,您将知道“autorizacao”输入是否无效。

[form id].[input name].[$valid or $invalid or $dirty...]

所以你的代码应该是这样的: 我更改了输入的名称并提交的 ng-disabled

<form name="enviarAutorizacao" id="enviarAutorizacao" novalidate>
  <label class="form-label-gray">autorization</label>
  <input class="form-control col-sm-6" ng-model="current.autorizacao" id="autorizacao" ui-mask="" maxlength="20" name="autorizacao" required>
  <div class="form-group col-sm-8">
    <label class="form-label-gray"> Value </label>
    <div class="form-group col-sm-2 form-label-gray">
      <label>$</label>
    </div>
    <div class="form-group col-sm-9">
       <input class="form-control" maxlength="16" ng-model="current.valor" required id="valor" name="valor">
    </div>
  </div>
  <div class="form-group col-sm-12">
    <button class="btn btn-default" ng-disabled="enviarAutorizacao.autorizacao.$invalid || enviarAutorizacao.valor.$invalid" id="submit-representante-estabelecimento" ng-click="validateAssociate()">click me</button>
  </div> 
</form>

【讨论】:

    【解决方案2】:

    尝试单独使用实际输入的 id 作为 ng-disabled 的参数。

    或者,您可以检查 current.autorizacao 和 current.valor 的有效性并使用它们。

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 1970-01-01
      • 2015-08-09
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 2020-06-13
      相关资源
      最近更新 更多