【问题标题】:Disable required attribute on one radio button禁用一个单选按钮上的必需属性
【发布时间】:2015-06-19 17:15:56
【问题描述】:

我在引导模式中有 3 个单选按钮,我希望只需要其中的 2 个来提交表单。我创建了一个使用 jQuery 实现的 requiredCheck() 函数,所以我不想使用它。使用 AngularJS 时,禁用一个单选按钮所需属性的最佳方法是什么?

HTML

<form name="jawn">
      <div class="modal-header">
        <h3 class="modal-title">Jawn</h3>
      </div><!-- /modal-header -->
      <div class="modal-body">
        <ul>
          <li ng-repeat="item in items">
            <label for="optionsRadios">
                <input type="radio" ng-model="$parent.data.status" name="optionsRadios" ng-value="item.id" required/ ng-click="requiredCheck()"> {{item.name}}
            </label>
          </li>
        </ul>
        <h4>Comment</h4>
        <textarea ng-class="{error: thing.comment.$dirty && thing.comment.$invalid}" type="text" rows="3" cols="64" ng-model="data.comment" ng-minlength="4" ng-required></textarea>
        <span class="error" ng-show="thing.comment.$error.required">required</span>
      </div><!-- /modal-body-->
      <div class="modal-footer">
        <button type="submit" class="btn btn-warning" ng-click="ok()" ng-disabled="thing.$invalid">Part Jawn</button>
        <button type="button" ng-click="cancel()" class="btn btn-default">Cancel</button>
      </div>
    </form>

JavaScript

angular.module('app')
.controller('ModalController', function($scope, $modalInstance, $timeout) {
  'use strict';

  $scope.item = 0;

  $scope.items = [
    "Zero": 0,
    "Uno": 1,
    "Dos": 2
  ];

  $scope.requiredCheck = function () {
    var $btnWarning = $('.btn-warning');
    var $textarea = $('textarea');
    $timeout(function() {
      if($scope.data.status === item.Dos) {
        $btnWarning.removeAttr('disabled');
        $textarea.removeAttr('required');
      } else if ($scope.data.status === 3) {
        $btnWarning.prop('disabled',true);
        $textarea.prop('required', true);
      } else if ($scope.data.status === 3) {
        $btnWarning.prop('disabled',true);
        $textarea.prop('required', true);
      }
    },100);
  };

  $scope.ok = function () {

  };

  $scope.cancel = function () {
    $modalInstance.dismiss('cancel');
    $modalInstance.close();
  };

});

【问题讨论】:

    标签: javascript jquery html angularjs twitter-bootstrap


    【解决方案1】:

    您应该使用 方法。正如您已经从控制器指定了ngRequired 设置true/false

    来自DOCs

    ngRequired:如果设置为 true,则设置必需属性

    HTML

    <textarea ng-model="data.comment" ng-required="textRequired"></textarea>
    

    脚本

    $scope.requiredCheck = function () {
        if(condition){
            $scope.textRequired = false;
        }else{
            $scope.textRequired = true;
        }       
    };
    

    注意:我已经简化了答案

    【讨论】:

    • 太棒了,非常感谢 Satpal。我在脑海中想到 ng-required 属性不允许有值。我的错误,再次感谢。
    猜你喜欢
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多