项目中遇到给用户在所有产品中匹配一部分产品。用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. 建立爬虫代理IP池

    单线程构建爬虫代理IP池 #!/usr/bin/python3.5 # -*- coding:utf-8 -*- import time import tempfile from lxml impor ...

  2. java定时器实现总结

    前言:Java定时器目前主要有3种实现方式:JDK组件,Spring Task,Quartz框架. 1. JDK组件(1) java.util.TimerTask MyTimerTask.java: ...

  3. Slider绑定事件,初始化NullPointerException错误

    最近刚刚接触Silverlight,随便在网上找了一个入门的博文http://www.cnblogs.com/Terrylee/archive/2008/03/07/Silverlight2-step ...

  4. 让WeuiPicker隐藏日期中的日,只保留年月

    weui.datePicker({ start: 1990, end: new Date().getFullYear() + 3, defaultValue: [year, month, 1], on ...

  5. SpringBoot入门笔记(四)、通常Mybatis项目目录结构

    1.工程启动类(AppConfig.java) 2.实体类(domain) 3.数据访问层(dao) 4.数据服务层(service) 5.前端控制器(controller) 6.工具类(util) ...

  6. 微信小程序开发(3) 热门电影

    在这篇微信小程序开发教程中,我们将介绍如何使用微信小程序开发热门电影及预览功能. 本文主要分为两个部分,小程序主体部分及电影主页和详情页页面部分 一.小程序主体部分 一个小程序主体部分由三个文件组成, ...

  7. hadoop3.x的安装

    请看https://www.cnblogs.com/garfieldcgf/p/8119506.html

  8. linux关闭防火墙及开放端口

    1) 重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效 开启: service iptables sta ...

  9. Jvm 性能检测

     一.Jmap 1.查看整个LVM 内存状态jmap -heap pid 2.查看JVM堆中对象详细占用情况jmap -histo [pid] 3.导出整个JVM 中内存信息jmap -dump:fo ...

  10. 第19月第17天 uitextview 文本垂直居中 uiimage中间不拉伸

    1. open class VericalCenteringScrollView: UIScrollView { override open var contentOffset: CGPoint { ...