AngularJS conditional ng disabled不会重新启用
AngularJS conditional ng-disabled does not re-enable
给定一个使用ng-disabled="truthy_scope_variable"
有条件禁用的文本输入字段,AngularJS在第一次范围变量被伪造时禁用该字段,但在后续更改时不会启用它。因此,该字段将保持禁用状态。我只能假设出了问题,但控制台日志是空的。
truthy scope变量与单选按钮模型绑定,我甚至可以更改$watch
,但输入字段的ng-disabled
没有按预期工作。我已经手动尝试过调用$apply
,但看起来Angular正在触发DOM更改。
在控制器中:
$scope.new_account = true
单选按钮:
<input type="radio" ng-model="new_account" name="register"
id="radio_new_account" value="true" />
<input type="radio" ng-model="new_account" name="register"
id="radio_existing_account" value="false" />
条件禁用的输入字段:
<input type="password" ng-disabled="new_account" id="login-password"
name="password" ng-model="password" />
如果最初设置$scope.new_account = false
,则该字段将被禁用,但永远不会重新启用。为什么会发生这种情况?
这是因为HTML属性总是字符串,所以在您的示例中,ngDisabled在两种情况下都在计算字符串("true"或"false")。
为了补救,您应该将模型与ngDisabled:中的字符串值进行比较
ng-disabled="new_account == 'false'"
或者使用复选框,以获得实际的布尔值:
<input type="checkbox" ng-model="existing_account" name="register" id="checkbox_new_account" />
<label for="checkbox_new_account">Is Existing Account</label>
Password:
<input type="password" ng-disabled="existing_account" name="password" ng-model="password" />
这是一个包含两种解决方案的PLNKR。
有一种替代解决方案,只需使用
ng值
<input type="radio" ng-model="new_account" name="register"
id="radio_new_account" ng-value="true" />
<input type="radio" ng-model="new_account" name="register"
id="radio_existing_account" ng-value="false" />
<input type="password" ng-disabled="new_account" id="login-password"
name="password" ng-model="password" />
自2016年3月起,绑定值将在Chrome和Firefox中更新ui,即使禁用的ng为true,但在Safari中不为true。在Safari中,当您禁用ng时,ui不会更新,尽管输入元素value
属性将具有更新的值(更改后请检查element.value
。)
在Safari中,要使用ng-model
或ng-value
指令强制ui更新,必须使用ng readonly而不是ng disabled。
相关文章:
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 如何在 API 调用后和 if 语句中启用提交按钮
- 语义ui如何使用javascript启用或禁用下拉列表
- IE6在启用/禁用文本字段上闪烁
- 传单中如何在更改基层时启用/禁用覆盖层
- 根据字段的值启用按钮
- 如何使用javascript函数在gridview中按行启用/禁用复选框
- 如何禁用和启用css规则
- 淘汰赛.JS'启用'长度绑定条件不起作用
- 在新类 jQuery 上启用可拖动
- JavaScript 启用新的 HTML5 按钮属性:formaction、formmethod
- jQuery 性能问题,通过为新元素启用拖放
- Javascript——如何在不使用新运算符的情况下启用静态方法,同时防止使用实例函数
- 如何在使用窗口后启用浏览器选项卡.打开以启动一个新窗口
- 创建一个表单提交按钮,启用“在新窗中打开”;当用户右键点击时
- 检查打开新选项卡时是否启用了弹出窗口阻止程序
- 如何在加载新页面时启用jquery标签/单选按钮
- 有没有一种好方法来启用“在新窗口中打开链接”?在dom节点上的浏览器菜单选项,而不使链接跟随单击
- 如何启用超链接打开模态对话框,同时也允许在同一链接上的新选项卡中打开
- Jquery:如果其他滑动开关被启用(可见),在启动新的滑动开关之前关闭