今天我接近了一个奇怪的案例:我有两个单选按钮。
当一个(当前已选中)被禁用时,表单应该无法提交。
问题是,form.$valid
的标准方法不起作用: - /
更新
即使我注意到表单中的更改,$invalid
状态也不会反映在ng-disable
保存按钮上。为什么呢?
<input name="someRadio" ng-disabled="true" type="radio" value="CURRENT" ng-model="RadioPen.data.radio" required>
<input name="someRadio" type="radio" value="DELAYED" ng-model="RadioPen.data.radio" required>
<button ng-disabled="!RadioPen.someForm.$valid">Save</button>
以下是完整的工作示例:CodePen
答案 0 :(得分:1)
form.$valid
工作正常。 required
检查基于表单元素的value
工作。由于您已经在控制器脚本中为与单选按钮关联的模型提供了值,即RadioPen.data.radio
,因此正在满足required
条件,因此表单已经过验证。这是一个修改过的代码版本,我删除了单选按钮模型的初始化。
angular
.module('test', [])
.controller('RadioPen', radioPen)
function radioPen($scope) {
var vm = this;
vm.data= {};
$scope.RadioPen = vm;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="test">
<form name="RadioPen.someForm" ng-controller="RadioPen" novalidate>
Current
<input name="someRadio" ng-disabled="true" type="radio" value="CURRENT" ng-model="RadioPen.data.radio" required>
Delayed
<input name="someRadio" type="radio" value="DELAYED" ng-model="RadioPen.data.radio" required>
<button ng-disabled="!RadioPen.someForm.$valid">Save</button>
{{'is valid: ' + RadioPen.someForm.$valid}}
</form>
</div>
&#13;
答案 1 :(得分:0)
检查一下:
<div ng-app="test">
<form name="ctrl.someForm" ng-controller="RadioPen as ctrl" novalidate>
Current
<input name="someRadio" ng-disabled="true" type="radio" value="CURRENT" ng-model="RadioPen.data.radio" required>
Delayed
<input name="someRadio" type="radio" value="DELAYED" ng-model="RadioPen.data.radio" required>
<button ng-disabled="ctrl.someForm.$invalid">Save</button>
{{'is invalid: ' + ctrl.someForm.$invalid}}
</form>
</div>