必要に応じてドロップダウンを検証したいと考えています。デフォルトの値は、値がnullまたは空白の場合にのみ機能します(私が間違っている場合は修正してください)。値が 'に割り当てられていない場合、エラーを出してフォームを無効にする必要があります。'が必要です。Required/ngRequiredのカスタムディレクティブ
<select name="first" class="select" title="Select Approver" ng-model="applications.first" ng-options="x.id as x.value for x in list1" ng-change="SetToAll(applications.first,'1')" required></select>
私はエラーメッセージを表示することができますが、これはフォーム無効
<span class="error" ng-show="applications.first == 'not assigned'?true:false">Select Approver</span>
がSOLUTION作るん、これを使用する: -
1)あなたは必要を使用したい場合は、シャノンをチェックHochkinsソリューション。
<form name="formName">
<select name="first" class="select" title="Select Approver" ng-model="applications.first" ng-options="x.id as x.value for x in list1" ng-change="SetToAll(applications.first,'1')" required="true">
<option value="">Not Assigned</option>
</select>
<span class="error" ng-show="formName.first.$invalid ?true:false">Select Approver</span>
<pre>{{formName | json}}</pre>
</form>
Heブランク値<option value="">Not Assigned</option>
のオプションを追加しました。選択時にrequired="true"
と設定します。これは完全に機能します。
2)カスタムディレクティブの使用。
app.directive('req', [
function() {
var link = function($scope, $element, $attrs, ctrl) {
var validate = function(viewValue) {
var comparisonModel = $attrs.req;
var invalid = $attrs.invalid;
if (viewValue == invalid) {
// It's valid because we have nothing to compare against
ctrl.$setValidity('req', false);
} else {
ctrl.$setValidity('req', true);
}
};
$attrs.$observe('req', function(comparisonModel) {
// Whenever the comparison model changes we'll re-validate
return validate(ctrl.$viewValue);
});
};
return {
require: 'ngModel',
link: link
};
}
]);
し、HTMLコード:ここで
<select invalid="not assigned" req={{applications.first}} name="first" class="select" ng-model="applications.first" ng-options="x.id as x.value for x in list1" title="Select Approver" ></select>
<span class="error" ng-show="Step5.first.$error.req">Select Approver</span>
あなたはinvalid="not assigned"
またはinvalid='0'
またはinvalid=' '
などの任意の値を設定する必要があります。ディレクティブでは、値が一致すると無効な属性と比較され、エラーが表示されます。
はあなたにドロップダウンの既定値を代入しようとしたがいる: 'applications.first = null'なので –
@ShannonHochkins私はドロップダウンをカスケードして、私は私の質問を更新させるフィルタを使用している。 –
私の答えを見てください! –