【发布时间】:2015-05-24 10:24:08
【问题描述】:
我有一个带有select 的表单和一个在验证表单时启用的按钮。它适用于输入框。但是,$touched 似乎无法正常工作。即使触摸选择,该按钮也会启用。触摸选择时它应该变为无效。当我选择一个选项然后选择默认值时,它只会变为无效并且按钮被禁用。我希望它在触摸选择并使用鼠标指针离开时工作。
这是我的html:
<form role="form" name="frameVersionEditor" novalidate class="form-horizontal col-md-12">
<div class="row">
<div class="form-group col-lg-2 col-lg-push-1" ng-class="{'has-error' : frameVersionEditor.distributor.$invalid && frameVersionEditor.distributor.$touched}">
<label>Distributor</label>
<select name="distributor" data-ng-model="myDistr" data-ng-options="distributors.key as distributors.value for distributors in distributorOptions" class="form-control" required>
<option value="">Select Distributor</option>
</select>
<span ng-show="frameVersionEditor.distributor.$error.required && frameVersionEditor.distributor.$touched" class="help-block">Please select a distributor</span>
</div>
</div>
</form>
<button data-ng-click="generate()" ng-disabled="frameVersionEditor.$invalid">Generate</button>
这是我的控制器:
var myApp = angular.module('myApp',[]);
myApp.controller('myController', ['$scope', function($scope) {
$scope.myDistr = [];
$scope.distributors =
[
{
'key': '0',
'value': 'A'
},
{
'key': '1',
'value': 'B'
},
{
'key': '2',
'value': 'C'
}
];
$scope.generate = function() {
//Do something
};
}]);
【问题讨论】:
-
我也有同样的问题
-
"$touched" 表示控件已聚焦但现在模糊(即不再聚焦于该控件)。无需选择默认选项或其他任何内容...
<input>也会发生相同的行为。如果您想要不同的行为(并且从问题中不清楚它是什么),那么您需要通过自定义指令来实现它。 /@OMGPOP
标签: angularjs validation select