多组(个数不定)name不同的单选按钮组的生成

最近在用jquery的datatable做项目,期间遇到一个需要生成多组单选按钮组的问题,且每一个单选按钮组的name均不相同,当然就想到用循环
去生成这些单选按钮组。生成单选按钮组本身没有任何问题,不过,当再次刷新列表界面时,生成的单选按钮组的name的下标就会变化。想要让循环变量从0开
始再进行循环,此时需要用到datatable的两个属性:preDrawCallback(刷新之前调用)和drawCallback(刷新之后调
用)。示例代码如下:

$(function () {

var taskId = $(‘#taskId‘).val();

var taskKey = $(‘#taskKey‘).val();

var savedOptionArray = new Array();

var savedCommentArray=new Array();

var xmhzListIdx = -1;

//datatable

oTable = $(‘#dataTable‘).dataTable({

"aaSorting": [

[ 1, "desc" ]

],//排序设置

"preDrawCallback": function( settings ) {

savedOptionArray = new Array();

for (var k= 0; k <= xmhzListIdx; k++) {

var projectId = $("#hid_projectId_" + k).val();

if (projectId) {

var optionVal = 0;

var comment= $("#hid_comment_" + projectId).val();

if (document.getElementById("option_"+projectId+"_agree").checked) {

optionVal = 1;

savedCommentArray["ID" + projectId] = comment;

} else if (document.getElementById("option_"+projectId+"_needEdit").checked) {

optionVal = 2;

savedCommentArray["ID" + projectId] = comment;

} else if (document.getElementById("option_"+projectId+"_delete").checked) {

optionVal = 3;

savedCommentArray["ID" + projectId] = comment;

}

savedOptionArray["ID" + projectId] = optionVal;

}

}

xmhzListIdx = -1;

},

"drawCallback": function( settings ) {

for(var key in savedOptionArray){

var projectIdLoop = key.substr(2);

var checkV = savedOptionArray[key];

if (checkV == 1) {

$("#option_"+projectIdLoop+"_agree").attr("checked", "checked");

$("#auditOpinion").val(savedCommentArray[key]);

$("#hid_comment_" + projectIdLoop).val(savedCommentArray[key]);

} else if (checkV == 2) {

$("#option_"+projectIdLoop+"_needEdit").attr("checked", "checked");

$("#auditOpinion").val(savedCommentArray[key]);

$("#hid_comment_" + projectIdLoop).val(savedCommentArray[key]);

$("#hid_commentId_" + projectIdLoop).css(‘display‘,‘block‘);

} else if (checkV == 3) {

$("#option_"+projectIdLoop+"_delete").attr("checked", "checked");

$("#auditOpinion").val(savedCommentArray[key]);

$("#hid_comment_" + projectIdLoop).val(savedCommentArray[key]);

$("#hid_commentId_" + projectIdLoop).css(‘display‘,‘block‘);

}

}

},

"ajax": {

"url": __CONTEXT__ + "/institute/xmylxHuizhong!list",

"type": "POST",

"data" : {

‘taskId‘ : taskId,

‘taskKey‘ : taskKey,

},

//后台传递参数

//"data": function ( d ) {

//var searchCondition = $("#projectgress").serializeArray();

//var searchResult = initialSearchCondition(searchCondition, d);

//        return searchResult;

//},

},

"aoColumns": [

{

"mData":"projectName",

},

{

"mData":"applyPersonName",

},

{

"mData":"deptCodeName",

},

{

"mData":"specializedFieldName",

},

{

"mData":"projectPreliminary.summary",

},

{

"mData":"projectPreliminary.innovation",

},

{

"mData":"projectPreliminary.goal",

},

{

"mData":"projectPreliminary.cost",

},

{

"mData": "projectId",

"sortable": false,//控制单列的排序

"mRender": function (data, type, full) {

return ‘<a href="javascript:void(0)"  + data + ‘);">编辑</a>‘;

}

},

{

"mData":"projectId",

"sortable": false,//控制单列的排序

"mRender": function ( data, type, full ) {

xmhzListIdx ++;

return ‘<input type="radio" id="option_‘+data+‘_agree" value="agree" name="option[‘+xmhzListIdx+‘]">同意&nbsp;‘+

                               ‘<input type="radio" id="option_‘+data+‘_needEdit" value="needEdit"  name="option[‘+xmhzListIdx+‘]">需要修改&nbsp;‘+

                               ‘<input type="radio" id="option_‘+data+‘_delete" value="delete"  name="option[‘+xmhzListIdx+‘]">删除‘+

                               ‘<input type="hidden" id="hid_projectId_‘+xmhzListIdx+‘" name="projectId[‘+xmhzListIdx+‘]" value="‘+data+‘">‘+

                               ‘<input type="hidden" id="hid_comment_‘+data+‘" name="comment[‘+xmhzListIdx+‘]">‘+

                               ‘<a href="javascript:void(0)" id="hid_commentId_‘+data+‘" style="display:none;" name="commentId[‘+xmhzListIdx+‘]" onclick="addAndEditComment(‘+xmhzListIdx+‘);">修改意见</a>‘;

}

},

],

"bFilter": false,

"bInfo": true,

"bPaginate": true,

"bProcessing": true,

"bSort": true, //排序

"fnRowCallback": function (nRow, aData, iDisplayIndex) {

/* Append the grade to the default row class name */

//渲染完表格后的处理事件

if (aData[2] == "1") {

$(‘td:eq(2)‘, nRow).html(‘<b>A</b>‘);

}

return nRow;

},

"bServerSide": true,

"oLanguage": {

"sLengthMenu": "每页显示 _MENU_ 条",

"sZeroRecords": "没有找到符合条件的数据",

//"sProcessing": "<img src=’./loading.gif’ />",

"sInfo": "当前第 _START_ - _END_ 条 共计 _TOTAL_ 条",

"sInfoEmpty": "没有记录",

"sInfoFiltered": "(从 _MAX_ 条记录中过滤)",

"sSearch": "搜索",

"sProcessing": "加载中...",

"oPaginate": {

"sFirst": "首页",

"sPrevious": "前一页",

"sNext": "后一页",

"sLast": "尾页"

}

},

"bLengthChange": false, //用户不可改变每页显示数量

"iDisplayLength": 10, //每页显示10条数据

"sPaginationType": "full_numbers",//分页 页脚以  数字方式分页

});

return;

});

时间: 2024-07-30 10:17:56

多组(个数不定)name不同的单选按钮组的生成的相关文章

asp.net 微信企业号办公系统-表单设计-单选按钮组

单选按钮组即:<input type='checkbox'/>控件: 绑定字段:与数据表的某个字段绑定. 数据源: 1.数据字典:在下面字段项中选择对应在数据字典项. 2.自定义:自己输入字符串表达式,格式:选项文本1,选项值1;选项文本2,选项值2 3.sql语句:根据一个sql语句查询出来的列有作为选项,查询结果第一个字段为文本,第二个字段为值,如果只有一个字段则文本和值相同. 默认值:为选项设置一个默认选定项. 事件:与文本框事件相同.

radio单选按钮组操作

radio单选按钮组操作与checkbox复选组操作不同, 因为在一组单选按钮中, 你只要选择了其中一个(表现为checked=ture), 那么其他按钮会自动设置为fasle, 这里不留意就会产生bug, 关键是要搞清楚流程的控制. 比如现在有一个需求是通过一个toggle开关来动态切换两个按钮: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&g

创建 数组规定每组个数

创建数组规定每组个数 NSArray *array = [UIFont familyNames]; _fontArray  = [[NSMutableArray alloc]initWithCapacity:13]; NSMutableArray *temp = nil; for (int index = 0; index < [array count]; index++) { //取出字体 NSString *font =array[index]; if (index % 5 == 0) {

.NET开源工作流RoadFlow-表单设计-单选按钮组

单选按钮组即:<input type='checkbox'/>控件: 绑定字段:与数据表的某个字段绑定. 数据源: 1.数据字典:在下面字段项中选择对应在数据字典项. 2.自定义:自己输入字符串表达式,格式:选项文本1,选项值1;选项文本2,选项值2 3.sql语句:根据一个sql语句查询出来的列有作为选项,查询结果第一个字段为文本,第二个字段为值,如果只有一个字段则文本和值相同. 默认值:为选项设置一个默认选定项. 事件:与文本框事件相同.

多行列单选按钮组RadioButton的实现

Android通过RadioGroup设置一组单选按钮RadioButton,但在RadioGroup中只能设置按钮排序为横排或纵排.当需要实现多行多列的单选按钮组时,查了网上的方法,发现两种解决方式: 一.通过在xml中设置margin android:layout_marginLeft="-100dip" android:layout_marginTop="40dip" 这种方式兼容性不理想,对于不同尺寸的设备需对margin进行相应调整. 二.对RadioGr

组播学习笔记(四)组播分发树简述+组播防环

组播拓扑: 从第一跳路由器(FH)到最后一条路由器(LH)中间会形成一个组播分发树. 组播分发树有两种模型: 1.源树模型:从源到接受者计算出一条最短路径. 如source1到host1走的路径是:source1-->A-->C-->host1 source1到host2走的路径是:source1-->A-->C-->E-->host2 source2到host1走的路径是:source2-->F-->D-->C-->host1 sourc

Java Matcher类 replaceAll 捕获组使用及使用符号$引用捕获组

Java Matcher类 replaceAll 捕获组使用及使用符号$引用捕获组 最近看了一段解析URL以判断支付方式是在线支付还是具体哪个网银或支付宝的代码.如下 private String[] getAction(String url){ String action = null; String pluginid = null; String pattern = "/(\\w+)_(\\w+)_(\\w+).html(.*)"; Pattern p = Pattern.comp

在win2008 r2主域控制域上打开“组策略管理”报错“未打开组策略对对象。你可能没有合适的权限”

在win2008 r2主域控制域上打开“组策略管理”报错“未打开组策略对对象.你可能没有合适的权限” 打开组策略管理其它选项提示:找不到指定路径.之前做过的操作:取消域控主机上的共享目录sysvol和netlogon.关闭域控主机上和客户机上的“文件共享和打印机共享”. 现在打开域控主机上的组策略管理报上述两种错误.解决方法:1.C盘下搜索sysvol,找到该目录,恢复共享.2.域控主机及客户机启用文件和打印机共享3.开始---运行---services.msc----重新启动Netlogon服

sql server迁移数据(文件组之间的互相迁移与 文件组内文件的互相迁移)

转自:https://www.cnblogs.com/lyhabc/p/3504380.html?utm_source=tuicool SQLSERVER将数据移到另一个文件组之后清空文件组并删除文件组 总结: (1)如果是一个文件组内只有一个文件 ~~把所有在该文件组内的表删除聚集索引,然后新建聚集索引至新的文件组 (2)如果是一个文件组内多个文件 [1]把某个文件清空转移到其他文件:使用DBCC SHRINKFILE(要移动数据的数据文件逻辑名称,EMPTYFILE) [2]把该文件组内所有