【问题标题】:Using several conditions for ng-disabled对 ng-disabled 使用几个条件
【发布时间】:2014-04-07 09:52:21
【问题描述】:

如果用户没有在字段中输入至少 50 个字符,我想禁用表单中的提交按钮。我曾想过使用这样的条件:

ng-disabled="addJobForm.$invalid && myInput.length > 50"

但是它不起作用。我不明白的是,如果我这样打印我的条件值:

{{addJobForm.$invalid && myInput.length > 50}}

值是正确的。

我做错了什么?

【问题讨论】:

  • 看起来不错... ng-disable 期望一个表达式,所以你不应该使用 {{addJobForm.$invalid && myInput.length > 50}}... 这是工作 plunker plnkr.co/edit/tpl:FrTqqTNoY8BEfHs9bB0f

标签: javascript forms angularjs


【解决方案1】:

我建议您在输入元素中使用 ng-minlength=50 并从提交按钮中删除第二个条件。因此,直到您的输入字段无效,提交按钮仍处于禁用状态。那里还有其他属性,如 ng-maxlength 或 ng-pattern(用于正则表达式)。

有关更多详细信息,您可以阅读此文档Angular's input validation

【讨论】:

  • 添加 ng-minlength 可以禁用提交按钮。但是,我有一个字符计数器(即 输入至少 {{50 - myInput.length}} 个字符),当我添加 ng-minlength 时它停止工作。知道为什么吗?
【解决方案2】:

尝试将此代码移动到作用域中。类似的东西

$scope.invalidFormOrLimitExceeded = function() { 
   return 'addJobForm.$invalid && myInput.length > 50'
}

ng-disabled="invalidFormOrLimitExceeded()"

看看有没有帮助

【讨论】:

    【解决方案3】:

    尝试将“&&”替换为& &

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      相关资源
      最近更新 更多