项目中遇到给用户在所有产品中匹配一部分产品。用layui 第一页选好之后到第二页再选,等回到第一页时之前选择的都没了,解决这个问题的办法如下:

//勾选的产品id集合
var chooseAdids = new Array();
//表格数据缓存
var table_data = new Array();
var adid = "";
layui.use('table', function () {
var table = layui.table;
//监听表格复选框选择
table.on('checkbox(user)', function (obj) {
if (obj.checked == true) {
//选中
if(obj.type == 'one') { //当选中一个时 obj.type默认是'one',否则默认是'all'
//去重复
if(chooseAdids.indexOf(obj.data.id,)==-)
{
chooseAdids.push(obj.data.id); } } else {
//全选
for (var i = ; i < table_data.length; i++) {
if(chooseAdids.indexOf(obj.data.id,)==-)
{ chooseAdids.push(table_data[i].id);
} }
}
}
else {
//取消选中
if(obj.type == 'one') {
for (var i = ; i < chooseAdids.length; i++) {
if (chooseAdids[i] == obj.data.id) {
//从下标 i 开始删除一个元素
chooseAdids.splice(i, );
}
}
}
else {
for (var i = ; i < chooseAdids.length; i++) {
for (var j = ; j < table_data.length; j++) {
if (chooseAdids[i] == table_data[j].id) {
//从下标 i 开始删除一个元素
chooseAdids.splice(i,);
}
}
}
}
}
}); var aid = parent.document.getElementById("txtmarry").value; //当编辑时从父页面拿到产品id存在chooseAdids里面供默认选中
if(aid!="")
{
var arr = aid.split(',');
for (var i = ; i < arr.length; i++) {
chooseAdids.push(arr[i]);
}
}
var width = calColumWidth(, , );
// 浏览器宽度发生改变
window.onresize = function () {
width = calColumWidth(, , );
tb.reload();
}
InitAllAdType();
//方法级渲染
var tb = table.render({
elem: '#LAY_table_user'
, url: '@Url.Action("AdidList", "Web_WebUsers")'
, cols: [[
{ checkbox: true, field: 'ck', LAY_CHECKED: false, width: width },
{ field: 'id', title: '产品ID', width: width },
{ field: 'title', title: '产品名称', width: width },
{ field: 'aduserid', title: '产品商ID', width: width },
{ field: 'price_descript', title: '价格描述', width: width },
{ field: 'price_adv', title: '产品商单价/元', width: width },
{ field: 'data_return', title: '返回期限', width: width, templet: '#data_returnTpl' },
{ field: 'data_Confirmation', title: '确认时间', width: width, templet: '#data_ConfirmationTpl' }
]]
, id: 'testReload'
, page: true
, limit:
, limits: []
, height: 'auto'
, width: '80%'
, done: function (res, curr, count) {
// $("[data-field='id']").css('display', 'none');
// 设置换页勾选之前的
table_data = res.data;
//循环所有数据,找出对应关系,设置checkbox选中状态
for (var i = ; i < res.data.length; i++) {
for (var j = ; j < chooseAdids.length; j++) {
if (res.data[i].id == chooseAdids[j]) {
//这里才是真正的有效勾选
res.data[i]["LAY_CHECKED"] = 'true';
//找到对应数据改变勾选样式,呈现出选中效果
var index = res.data[i]['LAY_TABLE_INDEX'];
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').next().addClass('layui-form-checked');
}
}
}
},
skin: 'row',
even: true
}); var $ = layui.$, active = {
reload: function () {
var txtguz = $('#txtguz');
var txtadtype = $('#txtadtype');
//执行重载
table.reload('testReload', {
page: {
curr: //重新从第 1 页开始
}
, where: {
txtguz: txtguz.val(),
txtadtype: txtadtype.val()
}
});
}
,
getCheckLength: function () { //一键申请
var uIDs = "";
if (chooseAdids.length <= ) {
layer.msg('请先选择要匹配的产品')
return;
}
else {
layer.confirm('确定匹配这些产品吗?', function (index) {
for (var i = ; i < chooseAdids.length; i++) {
uIDs += chooseAdids[i] + ",";
}
doOk(uIDs.substring(, uIDs.length - )); //将选中的产品id传到父页面显示出来
});
}
} }; $('.demoTable .layui-btn').on('click', function () {
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
}); function doOk(ids) {
parent.ChooseAdidValues(ids); //将选中的产品id传给父页面
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index); //关闭当前子页面
}

父页面:

解决layui选中项下一页清空问题的更多相关文章

  1. 使用mobile jQuery 动态给select下拉添加数据,选中项默认不显示的解决方法。

    getaddress(); function getaddress(type=0,parent='') { var tid=1; $.ajax({ type: "post", ur ...

  2. select2 清除选中项解决办法

    在项目中使用select2:选中项 设置可清除. 代码中加上了allowClear : true $.get("/Work/Ajax/Select.ashx", function ...

  3. 刷新各ifream当前页,下拉项改变触发事件js,给选中项加背景色js

    <script type="text/javascript" language="javascript"> //刷新框架各页面 function r ...

  4. Session变量不能传送到下一页.解决: session.use_trans_sid = 1

    转自:http://blog.csdn.net/drylandfish/article/details/244085 附:文摘===================================== ...

  5. jquery操作select下拉框的各种方法,获取选中项的值或文本,根据指定的值或文本选中select的option项等

    简介jquery里对select进行各种操作的方法,如联动.取值.根据值或文本来选中指定的select下拉框指定的option选项,读取select选中项的值和文本等. 这一章,站长总结一下jquer ...

  6. 解决layui下拉选择框只能选择不能手动输入文字

    审查元素可以看到,layui的select下拉框是用input和div模拟出来的,所以,如下例子,我的解决方法是:$('.mySelect').find('input').removeAttr(&qu ...

  7. ASP.NET MVC中使用MvcPager异步分页+在分页中复选框下一页上一页也保持选中

    ASP.NET MVC 分页使用的是作者杨涛的MvcPager分页控件  地址:http://www.webdiyer.com/mvcpager/demos/ajaxpaging/ 这个分页控件在里面 ...

  8. jquery 如何获取select 选中项的下一个选项的值

    <select> <option value="1" selected="selected">a</option> < ...

  9. jsp页面关建字查询出记录后,点下一页关键字会清空,怎么保持关键字不变而进行下一页操作?

    解决方案一: 1 把关键字带回后台,从后台再次传入! 2 把关键字传入cookie,从cookie获取 3 把表格一栏放在iframe中,搜索时,刷新iframe即可 解决方案二: 用2个div分开就 ...

随机推荐

  1. Android SVN上传项目

    方式一: 1 工具栏 VCS ——import into Version Control - Share Project (SubVersion)(注意不要用import into SubVersio ...

  2. shell 命令使用笔记

    1.提取字符串中以.ddd结尾的ddd值 result=$(echo "chip86.500" | grep -Eo '\.[0-9]{1,}' | grep -Eo '[0-9] ...

  3. 三十九、Linux 线程——线程的同步和互斥

    39.1 概念 线程同步 是一个宏观概念,在微观上包含线程的相互排斥和线程先后执行的约束问题 解决同步方式 条件变量 线程信号量 线程互斥 线程执行的相互排斥 解决互斥的方式 互斥锁 读写锁 线程信号 ...

  4. 代码管理工具:使用github和git工具管理自己的代码

    一.git工具和账户创建 1.1 安装 Git 是 Linus Torvalds 最近实现的源代码管理软件."Git 是一个快速.可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系 ...

  5. mssql 创建函数简单实例

    CREATE FUNCTION [dbo].[f_DailyIncome] ( @userId int, @date date ) ,) AS BEGIN ,); ) from Channel_Use ...

  6. cmd关闭被占用的端口命令及教程详解

    //关闭端口占用命令eg:1. netstat -nao | findstr “8080” 查询8080端口2. taskkill /pid 3017 /F 关闭pid为3017的进程 //详解 ↓但 ...

  7. Python基础3(2017-07-20)

    1.文件操作 现有文件如下: We were both young when I first saw you 当我第一次看见你的时候,我们都还年轻 I close my eyes and the fl ...

  8. #6279. 数列分块入门 3(询问区间内小于某个值 xx 的前驱(比其小的最大元素))

    题目链接:https://loj.ac/problem/6279 题目大意:中文题目 具体思路:按照上一个题的模板改就行了,但是注意在整块查找的时候的下标问题. AC代码: #include<b ...

  9. j假设程序需要要一个int烈血的刀变量来保存1英里所包含的步数(5280)为该变量编写一条声明语句。

    j假设程序需要要一个int烈血的刀变量来保存1英里所包含的步数(5280)为该变量编写一条声明语句. final intFT_PER_MILE =5280

  10. JVM内存分配及GC流程

    -verbose 这是查询GC问题最常用的命令之一,具体参数如: -verbose:class 输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断. -verbose:gc 输 ...