首页 > 解决方案 > 如何在提交按钮中强制控制非强制性

问题描述

我在表单中有一个文本框 A 和两个按钮 B 和 C。
如果我没有在文本框 A 中填写任何内容

文件

<form name="nm_eventform" novalidate> 
 <input type="text" ng-model="md_eventname" name="nm_evtname" required />
   <div ng-messages="nm_eventform.nm_evtname.$error" role="alert">
     <div ng-message="required" class="divMasterMsg">Event Name is required</div>
   </div> 
 <button type="submit">B</button>
 <button type="submit" ng-click="ButtonC()">C</button>
</form>

正如我所要求的,我不需要在 ButtonB() 中写任何东西。因为我想抑制 ButtonC() 中的强制条件,所以我使用 $setValidity 但它没有使我的表单有效。

JS文件

$scope.ButtonC= function () {        
        $scope.nm_eventform.nm_evtname.$setValidity('required', false);        
        if ($scope.nm_eventform.$valid) {    
        }
}

我试过 ng-required 但它不适合我的情况。

标签: angularjsng-messages

解决方案


您需要使用ng-required而不是required喜欢ng-required="{{editing == false ? true : false}}"并根据您的按钮单击事件更改 true 或 false 值。

    <form name="nm_eventform" novalidate> 
     <input type="text" ng-model="md_eventname" name="nm_evtname" ng-required="{{editing == false ? true : false}}" />
       <div ng-messages="nm_eventform.nm_evtname.$error" role="alert">
         <div ng-message="required" class="divMasterMsg">Event Name is required</div>
       </div> 
     <button type="submit">B</button>
     <button type="submit" ng-click="ButtonC()">C</button>
    </form>

**For Js File:**

$scope.ButtonC= function () {        
        $scope.editing  = true;
}

推荐阅读