2015-07-28 62 views
1

我想要遵循所有的例子,但我沒有任何運氣。我使用jquery驗證檢查創建了一個plunker。我只需要允許1個複選框被選中。 ​​如何限制與角或jquery的複選框選擇

<body ng-controller="MainCtrl"> 
    <div class="form-group fg-line"> 
    <label for="companies" class="control-label"><b>Role Type</b></label><br /> <br /> 
<table> 
    <tr ng-repeat="model in userRoles"> 
     <td> 
     <div class="checkbox m-b-15"> 
      <label> 
      <input id="rolebox" class="check" type="checkbox" ng-model="model.RoleId"> 
      <i class="input-helper"></i> 
       {{model.Name}} 
     </label> 
     </div> 
    </td> 
</tr> 
    </table> 
     </div>  
     <script> 
     var checked = [], 
      $check = $('.check').change(function() { 
      if (this.value == -1 && this.checked) { 
       $check.not(this).prop('disabled', true).prop('checked', false); 
       checked = []; 
      } 
      else { 
       $check.prop('disabled', false); 
       checked.push(this); 
       checked = $(checked) 
       checked.prop('checked', false).slice(-2).prop('checked', true); 
      } 
     }); 

+3

你爲什麼不只是使用無線電,而不是一個複選框,爲複選框通常表明多選擇,其中如收音機是單身。不要讓這個問題脫軌,而只是一個建議。 – mikeswright49

+0

好點。沒有想到這個 – texas697

+0

或者使用'if($(「:checkbox:checked」)。length> 1){//多於一個選擇}' – lshettyl

回答

2

我需要只允許1個選擇複選框到組外。

正如您在其中一個評論中提到的那樣,您應該真的使用單選按鈕來達到這個目的,因爲它們是針對這種情況的。如果您必須使用複選框,則可以執行以下操作。

$(document).on("change", ".check", function() { 
    var $allCheckboxes = $(".check"); 
    $allCheckboxes.prop("disabled", false); 
    this.checked && $allCheckboxes.not(this).prop("disabled", true); 
}); 

Your updated plunker

2

分配相同name值的所有複選框。例如:

<input name="nm" id="rolebox1" class="check" type="checkbox" ng-model="model.RoleId"> 
<input name="nm" id="rolebox2" class="check" type="checkbox" ng-model="model.RoleId"> 
+0

你可以在笨蛋中展示嗎?沒有在我的機器上工作 – texas697