2017-01-03 4 views
0

Я пытаюсь получить значение каждого флажка, который был выбран как истинный. Каждый раз, когда я выбираю флажок, он захватывает значение этого флажка вместо всех выбранных флажков.Получить каждый флажок checkbox value

Путь: 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); 
    } 
}); 
+0

Неясно, в чем ваша проблема. Вы пытаетесь получить все выбранные флажки, когда вы выбираете флажок? – Khang

+0

Да, это правильно – bp123

ответ

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

Добавить "[name = 'specialization']: checked", чтобы он только захватил выбранные флажки. – bp123

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); 
    }); 
}, 
+0

В Meteor вам никогда не придется использовать '$ (document) .ready()' –