首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 3.1全选复选框

Rails 3.1全选复选框
EN

Stack Overflow用户
提问于 2012-03-22 23:44:35
回答 2查看 3K关注 0票数 2

这是我的观点:

代码语言:javascript
复制
 @bulk_objects.each do |bulk_warehouse|
      bulk_error = @wh_errors[:"bulk_warehouse#{@count}"] if @wh_errors      
-%>
<tr class="<%= cycle("odd", "even") %>">
             <%= hidden_field_tag("bulk_warehouse_id#{@count}",bulk_warehouse.id) %>
               <td><%= text_field_tag("bulk_warehouse_asset#{@count}", bulk_warehouse.asset, :disabled => true)%></td>
              <td><%= text_field_tag("bulk_warehouse_serial#{@count}", bulk_warehouse.serial, :disabled => true) %></td>



              <td><%= check_box_tag "enable_record#{@count}",1,false,{:onclick => "bulk_warehouse_asset#{@count}.disabled = 
                                                                                bulk_warehouse_serial#{@count}.disabled = 
                                                                                !this.checked;"}%></td>



                    <td class="last">
                <%= link_to "#{t("web-app-theme.delete", :default => "Delete")}", bulk_warehouse_path(bulk_warehouse), :method => :delete, :confirm => "#{t("web-app-theme.confirm", :default => "Are you sure?")}" %>
              </td>


            </tr>
          </div>          
    <%  @count = @count +1 %>
 <% end -%>
      </table>
       <div class="actions-bar wat-cf">
    <div class="actions">
    </div>
 ..

这是我的控制器:

代码语言:javascript
复制
 @bulk_objects = BulkWarehouse.all
                         @count= @bulk_objects.count

现在我要在我的视图中添加一个“全选”复选框,当你点击它时,它会启用所有其他的"enable_record#{@count}“复选框。我知道这件事应该用Ajax和Jquery来完成,但我不知道怎么做。有人能帮我吗?谢谢你,我会的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-11 09:33:33

您可以使用button_to_function创建一个按钮,该按钮将选中/取消选中表单上的所有复选框。

将此代码放在视图中,即您希望选中/取消选中按钮的位置。单击该按钮时,它将运行toggleChecked javascript函数。

代码语言:javascript
复制
<%= button_to_function "Check / Uncheck All", "toggleChecked()" >

将javascript代码放在视图的底部。

代码语言:javascript
复制
<script type='text/javascript'>
    var toggleChecked = function() { $('input[type="checkbox"]').click(); });
</script>

该函数也可以放入assets/javascripts中相应的.js文件中。

这应该会让你启动并运行起来。

Button_to_function现在已弃用。我建议使用HTML5按钮和jQuery来处理这个问题。

查看按钮的代码:

代码语言:javascript
复制
<button type="button" id="check_all">
    Check / Uncheck All
</button>

Javascript:

代码语言:javascript
复制
<script type='text/javascript'>
    $('#check_all').on("click", function(){ $('input[type="checkbox"]').click(); });
</script>
票数 9
EN

Stack Overflow用户

发布于 2014-02-27 06:37:01

仅扩展@Aaron的答案,这将解决OP的问题,而不会更改页面上的其他复选框:

代码语言:javascript
复制
$('#check-all').click(function(e) {
  var checkboxes = $(e.target).closest('table').find('input:checkbox');
  var checked = $(e.target).attr('checked') === undefined;
  checkboxes.attr('checked', checked);
  checkboxes.not('#check-all').click(function() {
    $(e.target).attr('checked', false);
  });
});

如果其中一个框未选中,它还具有取消选中全选框的好处。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9825746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档