2015-03-19 60 views
17

我想將我的表單中的以下字段(設置)作爲必填字段輸入。我該怎麼做?如何根據需要製作ui選擇字段?

<div class="form-group"> 
    <label class="col-xs-5 control-label"> Settings*</label> 

    <div class="col-xs-7"> 
     <ui-select multiple tagging="adPreferredEmailDomainPatternTransform" id="emailDomainPatternListInput" 
        tagging-tokens="SPACE|," theme="bootstrap" 
        ng-disabled="settings.enableAuthentication == 'false'" 
        ng-model="settings.emailDomainPatternList"> 
      <ui-select-match>{{$item.displayFormat}}</ui-select-match> 
      <ui-select-choices repeat="item in emailDomainPatterns"> 
       {{item.displayFormat}} 
      </ui-select-choices> 
     </ui-select> 
    </div> 
</div> 
+0

添加'required'屬性 – devqon 2015-03-19 10:11:21

+1

我試着添加' ... ...'。但它不起作用 – fatCop 2015-03-19 10:13:07

+0

@fatCop,請求您將接受的答案更改爲提供問題解決方案的答案。 – 2017-12-29 12:53:55

回答

4

我認爲這是一個已知和長期存在的錯誤。有關更多信息,請參見this GitHub issue

+0

https://github.com/angular-ui/ui-select/issues/258#issuecomment-193139572 – ddagsan 2016-06-09 13:53:34

+2

它是不是固定在ui-選擇? – Ashutosh 2016-11-29 10:21:41

2

您可以使用自定義指令。

angular.module("app").directive('uiSelectRequired', function() { 
    return { 
     require: 'ngModel', 
     link: function (scope, element, attr, ctrl) { 
      ctrl.$validators.uiSelectRequired = function (modelValue, viewValue) { 
       if (attr.uiSelectRequired) { 
        var isRequired = scope.$eval(attr.uiSelectRequired) 
        if (isRequired == false) 
         return true; 
       } 
       var determineVal; 
       if (angular.isArray(modelValue)) { 
        determineVal = modelValue; 
       } else if (angular.isArray(viewValue)) { 
        determineVal = viewValue; 
       } else { 
        return false; 
       } 
       return determineVal.length > 0; 
      }; 
     } 
    }; 
}); 
+0

不幸的是,不起作用。 – Jakobovski 2017-07-24 21:05:39

9

你可以寫ng-required =「true」。

<div class="form-group"> 
 
    <label class="col-xs-5 control-label"> Settings*</label> 
 

 
    <div class="col-xs-7"> 
 
     <ui-select multiple tagging="adPreferredEmailDomainPatternTransform"     
 
        id="emailDomainPatternListInput" 
 
        tagging-tokens="SPACE|," 
 
        theme="bootstrap" 
 
        ng-disabled="settings.enableAuthentication == 'false'" 
 
        ng-model="settings.emailDomainPatternList" 
 
        ng-required="true"> 
 
      <ui-select-match>{{$item.displayFormat}}</ui-select-match> 
 
      <ui-select-choices repeat="item in emailDomainPatterns"> 
 
       {{item.displayFormat}} 
 
      </ui-select-choices> 
 
     </ui-select> 
 
    </div> 
 
</div>

+3

不起作用... – Ashutosh 2016-11-29 10:20:57

+0

是不適用於我...也許是因爲ui-select版本,我現在也在考慮這個.. – 123123d 2016-11-29 10:30:52

+0

This http://plnkr.co/編輯/ RN9Fry?p =最後預覽工作,只要你確定你的元素在使用ng-form =「myForm」的div中。我已經搜索了很久,嘗試@Ashutosh。 – 123123d 2016-11-29 10:43:43

-1

您可以通過使用選擇

<button ng-disabled="($ctrl.rewardForm.$invalid && $ctrl.valueForValidation) || $ctrl.pend">Submit</button> 
5

無答案的真正工作對我來說價值處理這個問題。我用一個簡單的隱藏輸入解決了這個問題,它使用和ui-select相同的ng模型,並在表單中驗證它。

<input type="hidden" name="email_domain_pattern" ng-model="settings.emailDomainPatternList" required/> 
+1

這是最好的解決方法,對我來說簡單而有效! – DennyHiu 2017-10-25 07:26:08

+0

一個例子會幫助 – 2017-12-29 06:33:47

+0

@SaeedJassani,我已經添加了代碼片段的答案。希望能幫助到你。 – 2017-12-29 12:50:42

0

您可以先設置要求。

<form name="form"> 
    <div ng-class="{ 'has-error': form.premise.$touched && form.premise.$invalid }"> 
    <div class="col-md-3"> 
     <div class="label-color">PREMISE <span class="red"><strong>*</strong></span></div> 
    </div> 
    <div class="col-md-9"> 
     <ui-select name="premise" 
       id="premise" 
       ng-required="true" 
       ng-model="selectedPremise" theme="select2" 
       ng-disabled="plantregistration.disabled" 
       class="max-width" title="Choose a premise"> 
     <ui-select-match 
      placeholder="Select or search a premise..."> 
      {{$select.selected.name}} 
     </ui-select-match> 
     <ui-select-choices 
      repeat="person in plantregistration.list12 | filter: {name: $select.search}"> 
      <div ng-bind-html="person.name | highlight: $select.search"></div> 
     </ui-select-choices> 
     </ui-select> 
     <span ng-show="form.premise.$touched && form.premise.$invalid" 
      class="label-color validation-message"> 
      Premise is required</span> 
    </div>   
    </div> 
</form> 

添加一些scss(或轉換爲CSS)喜歡;

.label-color { 
     color: gray; 
    } 
.has-error { 
    .label-color { 
      color: red; 
     } 
     .select2-choice.ui-select-match.select2-default { 
      border-color: red; 
     } 
    } 
.validation-message { 
     font-size: 0.875em; 
    } 
.max-width { 
     width: 100%; 
     min-width: 100%; 
    } 
相關問題