2014-09-19 2 views
0

У меня есть два блока с флажками. Я пытаюсь проверить этот флажок с помощью JS.Выбрать все/Снять выделение Все флажки на странице по id

<%= hidden_field_tag "user[roles][]" %> 
    <% User.valid_roles.map{|c| {name: c, id: User.mask_for(c)} }.each do |role| %> 
     <%= check_box_tag "user[roles][]", role[:name], user.has_role?(role[:name]), id: "user_role_#{role[:id]}" %> 
     <%= label_tag "user_role_#{role[:id]}", role[:name].to_s.titleize %><br/> 
     <% end %> 




$('#selectAll').click(function() { 
    if(this.checked) { 
     $(':checkbox').each(function() { 
      this.checked = true;       
     }); 
    } else { 
     $(':checkbox').each(function() { 
      this.checked = false;       
     }); 
    } 
}); 
+1

Показать код 'js', пожалуйста. –

+0

Также, пожалуйста, покажите образец визуализированного html –

+0

Спасибо, ребята, у меня есть деньги, как это сделать. $ ('# selectAllCompanies'). Click (function() { if (this.checked) { $ ('input [id^= "работодатель _"]'). Each (function() { this.checked = правда, }); } еще { $ ('вход [ID = "работодатель _"]') каждая (функция() { this.checked = ложь; });} }); Но так или иначе, чтобы сделать это повторно используемым кодом? Вместо того, чтобы передавать новый идентификатор каждый раз, используя один JS для повторного использования? – Raz

ответ

0

Что-то, как это должно работать:

$('#selectAll').on('change', function(){ 
    var checkboxes = $('input[id^="employer_"]'); 
    var checkedValue = !!this.checked; 

    checkboxes.prop('checked', checkedValue); 
}); 

Вот скрипку, чтобы продемонстрировать: http://jsfiddle.net/f5nx0czv/

С JQuery вы можете установить свойство/атрибут повально не нужно перебирать над коллекция.

+0

Привет, Роб, спасибо! Это отлично работает. – Raz

+0

Без проблем, рад помочь @Raz –

Смежные вопросы