触发所需的验证angularjs

时间:2016-03-14 16:44:51

标签: angularjs

我有一个选择与另一个连接,当第一个选择时需要第二个, 我通过控制器上的jquery来做这件事

<select id="month-selector" name="month" ng-change="controller.setRequired()">
</select>
<select id="year-selector" name="year">
</select>

//controller
$("#year-selector").prop('required', true);

在我的表单上,我有一个添加按钮,根据表单有效性启用/禁用

<button ng-disabled="!controller.myForm.$valid">
    Add
</button>

所以当我在第一个选择中选择一个选项时我想要禁用该按钮,直到我在第二个选择上选择一个选项,我尝试在脏状态下设置第二个选择以触发表单无效但是它没有工作。

//controller
$("#year-selector").prop('required', true);
myForm.customerSinceYear.$setDirty();

2 个答案:

答案 0 :(得分:1)

您可以在第二个选择元素上使用ng-required,仅在第一个具有值

时才需要
[System.Web.Http.HttpPost]
public async Task<IHttpActionResult> PostNotification()
{
    string body = "";
    await
    Request.Content.ReadAsStreamAsync().ContinueWith(x =>
               {
                   var result = "";
                   using (var sr = new StreamReader(x.Result))
                   {
                       result = sr.ReadToEnd();
                    }
                    body += result;
               });

答案 1 :(得分:1)

试试这个

function TestController($scope) {
  
  $scope.required = false;
  $scope.setRequired = function(){
    $scope.required = true;
    }
  
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="" ng-controller="TestController" >
  <form name="myForm">
    <select id="month-selector" name="month" ng-model="month" ng-change="setRequired()" required>
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
   </select>
   <select id="year-selector" ng-model="year" ng-required="required">
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
   </select>
    <button ng-disabled="myForm.$invalid">
     Add
    </button>
 </form>
</div>