获取每个选中的复选框值

时间:2017-01-03 05:51:04

标签: meteor meteor-blaze

我正在尝试获取已选中为true的每个复选框的值。每次我选中一个复选框时,它都会获取该复选框的值而不是所有选中的复选框。

路径:talentList.html

<fieldset>        
  <div class="checkbox">
    <label>
      <input name="specialisation" type="checkbox" value="Accounting Firm"> Accounting Firm
    </label>
  </div>

  <div class="checkbox">
    <label>
      <input name="specialisation" type="checkbox" value="Accounting in Industry"> Accounting in Industry
    </label>
  </div>
</fieldset>

路径:talentList.js

Template.talentList.events({
    'change [name="specialisation"]': function ( event, template ) {
        let specialisation = event.target.value;
        template.candidateListFilter.set( specialisation );
    }
});

2 个答案:

答案 0 :(得分:1)

事件处理程序中只设置了一个目标,因此event.target.value将是标量而不是数组。您需要遍历复选框数组。

Template.talentList.events({
  'change [name="specialisation"]': function ( event, template ) {
    $.each($('[name="specialisation"]'),function(i,cb){
      let specialisation = cb.value;
      template.candidateListFilter.set( specialisation );
    });
  }
});

说实话,这似乎是一个奇怪的模式。如果要在选中/取消选中复选框时更新文档,则不必同时设置所有其他复选框的状态,您应该只需戳一个所需的复选框。

答案 1 :(得分:0)

不确定这是否正确。它会创建所有选定选项的对象。

'change [name="specialisation"]': function ( event, template ) {

    $(document).ready(function(){

        var specialisation = $('input[name="specialisation"]:checked').map(function(){

            return $(this).val();

        });

        var specialisationListArray = specialisation.get();
        template.candidateListFilter.set( specialisationListArray );
    });
},