2011-01-08 3 views
2

Здесь я сталкиваюсь с некоторыми ошибками. Ничего не происходит. У кого-нибудь есть идея, почему?выберите все флажки ... с javascript и рельсами

Спасибо заранее!

 -form_tag :action => 'form', :name =>'admin_form' do 
     #images_actions_bar 
     .select_all 
      =check_box_tag('check_all', 'check_all', false, :onClick => "$$('admin_form input.check').each(function(box){box.checked=true});return false;") 

==============

спасибо. что в конечном итоге работал для меня был флажок, как это:

=check_box_tag('check_all', 'check_all', false, :onClick => "checkAll(document.admin_form.check_all, document.admin_form.checkbox);") 

и функция JS, как это:

function checkAll(field_main, fields){ 
if(field_main.checked == true){ 
    for (i = 0; i < fields.length; i++) 
     fields[i].checked = true ; 
}else{ 
    for (i = 0; i < fields.length; i++) 
     fields[i].checked = false; 
} 

ответ

0

Это не ясно, что Javascript рамки вы используете. Я действительно использовал только jQuery и (минимально) Prototype. Итак, я проверил бы, что admin_form правильно выбирает элемент формы. В jQuery это должно быть form[name="admin_form"]

Я изменил проверку/снятие отметки со всей фигуры jquery, которую я написал ранее. Надеюсь, это может помочь. Сначала нажмите «check_all», чтобы проверить все флажки. При щелчке по галочке снимите флажок «check_all».

$('#check_all').click(function() { 
    var checkboxes = $('form[name="admin_form"] > input:checkbox'); 
    $(checkboxes).each(
     function(){ 
      this.checked = $('#check_all').attr('checked'); 
     } 
    ); 
}); 
$('form[name="admin_form"] > input:checkbox').click(function() { 
var checkAll = $('#check_all'); 
if ($(checkAll).is(':checked') && !($(this).is(':checked'))) 
    { $(checkAll).removeAttr('checked'); } 
}); 
+2

спасибо. см. мое редактирование выше – mtay

+1

Ницца! Я хочу, чтобы больше людей выложили такое рабочее решение. –

0

Ответ размещен в оригинальном вопросе заставил меня началось, но я столкнулся с проблемами, потому что мои флажки названы message_id[]. Скобки приводили к синтаксическим ошибкам JS.

После шаблон в this thread, я получил вокруг этого цикла через все полей ввода на форме, а затем работает явно на них с type="checkbox".

Этот код на мой взгляд, создает Check All флажок (намеренно без метки):

<%= check_box_tag('check_all', 'check_all', false, :onClick => "checkAll(this);") %> 

, который использует этот JavaScript:

function checkAll(check_all){ 
    // Pass in a named "Check All" checkbox that appears on the same form where all 
    // checkboxes should be checked. 

    // Loop through an array containing ALL inputs on same form as check_all 
    var inputs = check_all.form.getElementsByTagName("input"); 
    for (var i = 0; i < inputs.length; i++) { 
    // Only work on checkboxes, and NOT on the "Check All" checkbox 
    if (inputs[i].type == "checkbox" && inputs[i].name != check_all.name) { 
     if(check_all.checked == true){ 
     inputs[i].checked = true ; 
     }else{ 
     inputs[i].checked = false ; 
     } 
    } 
    } 
} 
0
function checkAll(check_all){ 
    // Pass in a named "Check All" checkbox that appears on the same form where all 
    // checkboxes should be checked. 

    // Loop through an array containing ALL inputs on same form as check_all 
    var inputs = check_all.form.getElementsByTagName("input"); 
    for (var i = 0; i < inputs.length; i++) { 
    // Only work on checkboxes, and NOT on the "Check All" checkbox 
    if (inputs[i].type == "checkbox" && inputs[i].name != check_all.name) { 
     inputs[i].checked = check_all.checked ; 
    } 
    } 
}