2014-09-19 110 views
0

我有兩個複選框。我試圖用JS來檢查這個特定的複選框。全選/取消選中所有複選框,編號爲

<%= 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'代碼。 – 2014-09-19 16:23:17

+0

也請顯示呈現的html樣本 – 2014-09-19 16:30:14

+0

謝謝你們,我已經資助瞭如何去做。點擊(function(){if(this.checked){'input [id^='employer _「]')。each(function(){this.checked =真; });} 否則{ $( '輸入[ID^= 「僱主_」]')每個(函數(){ this.checked = FALSE; });} }); 但無論如何做它可重用的代碼?而不是每次使用一個JS重新使用一個新的ID? – Raz 2014-09-19 16:52:34

回答

0

像這樣的東西應該工作:

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

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

這裏是展示一個小提琴:http://jsfiddle.net/f5nx0czv/

使用jQuery,你可以設置一個屬性/屬性集體,沒有必要在迭代採集。

+0

Hi Rob,謝謝!這很好。 – Raz 2014-09-19 18:42:50

+0

沒問題,很高興幫助@Raz – 2014-09-19 18:53:11

相關問題