我在这里遇到了某种类型的错误。什么都没发生。有谁有想法为什么?
事先谢谢!
-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 :(得分: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'); }
});
答案 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 ;
}
}
}
}
答案 2 :(得分: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 ;
}
}
}