AngularJS:在多个复选框之后启用按钮“已选中”

时间:2014-09-23 04:11:33

标签: javascript angularjs validation checkbox

假设我有两个问题,每个问题都有各自的复选框和“Next->”按钮。我想启用“下一步”按钮,每个问题至少有一个选中复选框。我把一切都包裹在表格中。像这样的东西

<form name="form_" novalidate>
 <div="cont_1" >
     <label>
      <input type="checkbox" ng-model="data1.enabled" ng-required="!data1.enabled">
     </label>
      .
      . 
  </div>
  <div="cont_2" >
     <label>
       <input type="checkbox" ng-model="data5.enabled" ng-required="!data5.enabled">
     </label>
       .
       .
  </div>
  <button ng-disabled="form_.$invalid">
  </form>

问题是我必须选择按钮的所有复选框才能启用,我不想要,我想要的是每个问题中至少有一个要检查按钮启用,它可以是1&amp; 1,2和&amp;等等......但并非强有力的全部。我之前使用了ng-required和radiobutton,它确实有效。虽然复选框不一样。似乎$ invalid无法检查所有人是否遵守,但这不是我想要的。

提前致谢!!!

2 个答案:

答案 0 :(得分:1)

您不应该使用ng-required作为复选框,因为复选框required表示必须选择它才有效。因此,如果您在表单required中有一些复选框,则必须检查该表单是否有效。

对于单选按钮,它的工作方式不同。单选按钮上的required强制选择至少一个值。

检查

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_checkbox_required

您应该为每个问题维护一个标志,可以在选择该问题的答案时设置,并在设置了所有问题的这些标志时启用该按钮。 ng-required不是解决问题的方法。

答案 1 :(得分:1)

我同意尼尔斯的意见 - 你希望从ng-required中得到一些它不应该做的事情。

您需要:

  1. 在一些QuestionService中实现逻辑,确定有多少 检查答案构成一个已回答的问题,并驱动你的 查看该逻辑,或
  2. 创建一个监控其子项间复选框的指令。
  3. 对于方法(1),我创建了一个plunker:http://plnkr.co/edit/pON3PmS77oqqe0aj4Fsb