【发布时间】:2016-03-21 10:35:31
【问题描述】:
当使用 angular 的 (1.5) 表单支持时,我希望当一个字段被禁用时,它不应该被标记为无效,因为用户不可能更改值。
但是,如下面的plunker所示,需要一个字段,但可以通过复选框从启用切换到禁用,反之亦然,表单验证结果没有改变,整个表单仍然无效,虽然如果该字段被禁用,则无法更改值。
http://plnkr.co/edit/OMZkoPgPZcHjO67JF88c?p=preview
连同显示验证消息和提交表单,这在 UX 和使用角度验证来确定表单状态以及是否可以“提交”(将 AJAX 发送到服务器)的灵活性方面带来了问题。
(下面的代码在plunker里,我只是贴在这里,因为链接plunker时需要代码)
<form name="vm.form" novalidate>
<input ng-model="vm.model" ng-disabled="vm.disabled" required />
<label><input type="checkbox" ng-model="vm.disabled" />Disable field</label>
</form>
Form is invalid: {{vm.form.$invalid}}
【问题讨论】:
-
使用$dirty可以检查字段是否被编辑
-
如果 ng-disabled 是动态的,那没关系,想象一下:用户编辑该字段,然后他选择了一些其他选项使该字段被禁用,因此它在同时,除了禁用之外,它仍然使整个表单无效
-
所以你要问的是,当你禁用字段 angularJS 时不应该验证它??
-
它应该将表单标记为有效?
-
是的,对我来说这是一个合理的行为,因为当它被禁用时,用户不可能更改该字段。那么为什么要验证,为什么用户不能提交表单,为什么要出现验证消息...
标签: angularjs