Javascript 复选框只在第一页起作用-数据表、rails
Senario:因此基本上我使用的是数据表,并且在其第一列上有复选框。我的数据表有多个页面(分页) 问题:当我在一个页面(可以是任何页面)上选中几个复选框,并在其他页面上选中几个复选框时 只有当我在当前页面上时,才会保存结果 我对datatables/javascript非常陌生,不知道如何解决这个问题Javascript 复选框只在第一页起作用-数据表、rails,javascript,ruby-on-rails,datatables,Javascript,Ruby On Rails,Datatables,Senario:因此基本上我使用的是数据表,并且在其第一列上有复选框。我的数据表有多个页面(分页) 问题:当我在一个页面(可以是任何页面)上选中几个复选框,并在其他页面上选中几个复选框时 只有当我在当前页面上时,才会保存结果 我对datatables/javascript非常陌生,不知道如何解决这个问题 $('#formDataTable').DataTable({ responsive: true, autoWidth: true, "bF
$('#formDataTable').DataTable({
responsive: true,
autoWidth: true,
"bFilter": true,
"bRetrieve": true,
"bInfo": true,
"sPageFirst": false,
"sPageLast": false,
});
我已经读了这么多页了。
链接当前与此问题无关->如果您使用的是Rails,那么如何使用 如果要创建新记录,一个简单的示例是:
<%= form_for(:table_name, :action => 'create') do |f| %>
<table summary="Form data table">
<tr>
<th><%= f.label(:responsive) %></th>
<td><%= f.check_box(:responsive) %></td>
</tr>
<tr>
<th><%= f.label(:auto_width) %></th>
<td><%= f.check_box(:auto_width) %></td>
</tr>
</table>
<%= submit_tag("Create Page") %>
<% end %>
“create”)do | f |%>
即使您有多个页面,如果您将所有表单助手都保存在form_for
方法中,那么所有内容都应该保存到数据库中。原因
出于性能原因,jQuery DataTables会从DOM中删除不可见的行,这就是为什么在提交表单时只会提交可见复选框的原因
解决方案
在提交表单时,您可能需要将那些已选中且在DOM中不存在的
转换为
例如,要提交包含所有复选框值的表单:
var table=$('#示例').DataTable();
$(“表格”)。在('submit',函数(e){
var$form=$(此);
//迭代表中的所有复选框
表.$('input[type=“checkbox”]”)。每个(函数(){
//如果DOM中不存在复选框
如果(!$包含(文档,本)){
//如果选中复选框
如果(选中此项){
//创建一个隐藏元素
$form.append(
$('')
.attr('类型','隐藏')
.attr('name',this.name)
.val(此.value)
);
}
}
});
});
如果您通过Ajax提交表单,则更简单
例如,要使用所有复选框的值通过Ajax提交表单:
var table=$('#示例').DataTable();
$(“#btn提交”)。在('click',函数(e){
e、 预防默认值();
$.ajax({
url:“/path/to/your/script.php”,
数据:table.$('input[type=“checkbox”]”)。serialize();
}).完成(功能(数据){
控制台日志(“响应”,数据);
});
});
演示
请参阅我们的文章进行演示。在尝试了很多方法之后,我终于找到了这个解决这个问题的甜蜜而简单的方法!!!! 这里#contect_form是表单id…您必须将数据表放在表单中,因为在页面加载时您可以初始化数据表行
var表;
$(文档).ready(函数(){
table=$('#table_id')。数据表({
滚动:“412px”,
是的,
自动宽度:false,
错:,
是的,
});
$('contact#u form')。关于('submit',函数(e){
var form=此;
//将所有页面中的一组表单元素编码为名称和值的数组
var params=table.$('input,select,textarea').serializeArray();
//迭代所有表单元素
$.each(参数、函数(){
//如果DOM中不存在元素
如果(!$.contains(文档,表单[this.name])){
//创建一个隐藏元素
$(表格)。附加(
$('')
.attr('类型','隐藏')
.attr('name',this.name)
.val(此.value)
);
}
});
});
});
Datatables是一个jquery插件,根据当前选择的页面创建和销毁行。HTML在这里几乎是无关紧要的-Datatables将对其进行大量修改。。。我懂了。。我不太熟悉这种数据表方法。你不认为传统的表单助手会做到这一点吗?:)非常感谢。现在一切似乎都很好:)我将查看gyrocode.com/articles中有关复选框的内容。