Bootstrap - 在下拉列表中选择更改时,强制使用文本控件

时间:2015-05-21 13:39:19

标签: angularjs twitter-bootstrap twitter-bootstrap-3 angular-ui-bootstrap

我的表单中有一个选择控件和一个文本控件。当选择发生变化时(当用户选择特定值时),我希望文本控制是强制性的。打开表单时,此文本控件不应是必需的。这可能吗?

使用bootstrap 3和AngularJS。对我们两个来说都是新手。

这是我的代码:

<div class="form-group">
    <label class="col-sm-2 control-label">Select an Option</label>
    <div class="col-sm-4">
        <select class="form-control" name="type">
            <option value="A">Option A</option>
            <option value="B">Option B</option>
        </select>
    </div>
    <div class="col-sm-4">
        <input type="text" class="form-control" name="text" id="text" ng-model="text" >
        <span class="help-block" style="color:red" ng-show="myform.text.$dirty && myform.text.$invalid">
            <span ng-show="myform.text.$error.required">Required, when Option B is selected</span>
        </span>
    </div>
</div>

默认情况下&#34;选项A&#34;将被选中,当用户选择&#34;选项B&#34;时,我希望我的文本控制是强制性的。打开表单时,这不是强制性的

非常感谢任何帮助

1 个答案:

答案 0 :(得分:2)

我会在您的选择框中使用ng-change来设置$ scope属性,该属性将在文本字段中切换ng-required的值。

选择框:

<select class="form-control" name="type" ng-model="optionValue" ng-change="setRequired()">
              <option value="A">Option A</option>
              <option value="B">Option B</option>
            </select>

文字字段:

<input type="text" class="form-control" name="text" id="text" ng-model="text" ng-required="textRequired" />

控制器:

function mainController($scope) {
      $scope.optionValue = 'A';
      $scope.textRequired = false;
      $scope.setRequired = function() {
          if($scope.optionValue==='B') {
              $scope.textRequired= true;
          }
          else {
              $scope.textRequired = false;
          }
      }
  }

http://plnkr.co/edit/lyMgKIEJukpgnA31hnTz?p=preview