Layui之table中的radio在切换分页时无法记住选中状态的解决方法


Posted in Javascript onSeptember 02, 2019

情景描述

Layui数据表格中用到了表单元素radio,在当前页面选中radio状态,并同步更新到保存表格中所有的数据的数组中(获取表格中的所有数据并保存到数组中),再点击分页组件中的下一页、上一页、跳转按钮进行切换另外一个页面,然后在切换回之前的页面,会发现在以前页面上radio状态全部恢复默认了,我们当然是希望能保存住前一页radio的选中状态。

我写项目遇到的一个的情况:在第一页选中的radio的状态,点击下一页按钮切换到第二页,然后再点击上一页切换会第一页,第一页中的radio状态就恢复默认了。

原因分析

点击分页组件中的小组件进行切换页面时,渲染切换到的目标页面所使用的数据并不是更新后的tableContent中的数据,而是使用的table模块缓存中的数据,而我们只更新完tableContent中的数据时它并不会同步更新table模块缓存中的数据,所以导致了切换页面的时候无法记住radio的状态。

解决办法

弄清楚问题原因解决起来就很简单了,只需要再点击radio的时候,同步更新tableContent中的数据和table模块缓存中的数据就可以了(数据是放在table的cache属性中的,如下图)。

数据表格

Layui之table中的radio在切换分页时无法记住选中状态的解决方法

table中的数据

Layui之table中的radio在切换分页时无法记住选中状态的解决方法

代码

layui.use(['form','layer','element','table','laypage'],function(){
 var form = layui.form;
 var layer = layui.layer;
 var element = layui.element;
 var table = layui.table;
 var laypage = layui.laypage;

 // 存储数据表格中的原始数据也就是索引键信息
 var tableContent = new Array();

 // 监听数据表格中的radio,更新原始数据数据中的radio状态,同时更新数据表格的缓存
 form.on('radio(sortRadio)',function(data){
 console.log(data);
 console.log(data.elem); //得到radio原始DOM对象
 console.log(data.value); //被点击的radio的value值

 var radioValue = data.value;

 // 获取customId
 var radioName = $(data.elem).attr('name');
 var tempArr = radioName.split('-');
 var customId = parseInt(tempArr[1]);

 console.table(tableContent);

 // 将选择的排序方式更新到原始数据数组中
 $.each(tableContent,function(index,data){
  if (data.customId === customId) {
   data.indexOrder = radioValue;
  }
 });

 console.log(table);
 console.table(tableContent);

 // 更新缓存中的排序方式
 var cacheData = table.cache.indexKeyTable;
 $.each(cacheData,function(index,data){
  if (data.customId === customId) {
   data.indexOrder = radioValue;
  }
 });
 console.table(table.cache.indexKeyTable);

 });
})

以上这篇Layui之table中的radio在切换分页时无法记住选中状态的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js压缩利器
Feb 20 Javascript
用javascript实现分割提取页面所需内容
May 09 Javascript
javascript 写类方式之七
Jul 05 Javascript
IE本地存储userdata的一个bug说明
Jul 01 Javascript
js判断为空Null与字符串为空简写方法
Feb 24 Javascript
7个去伪存真的JavaScript面试题
Jan 07 Javascript
实现高性能JavaScript之执行与加载
Jan 30 Javascript
vue中渐进过渡效果实现
Oct 27 Javascript
React创建组件的三种方式及其区别
Jan 12 Javascript
基于cookie实现zTree树刷新后展开状态不变
Feb 28 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
Dec 05 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
layui表格分页 记录勾选的实例
Sep 02 #Javascript
layui radio点击事件实现input显示和隐藏的例子
Sep 02 #Javascript
layui复选框的全选与取消实现方法
Sep 02 #Javascript
解决Vue调用springboot接口403跨域问题
Sep 02 #Javascript
layui 动态设置checbox 选中状态的例子
Sep 02 #Javascript
layui之table checkbox初始化时选中对应选项的方法
Sep 02 #Javascript
微信小程序 简易计算器实现代码实例
Sep 02 #Javascript
You might like
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
js 获取、清空input type="file"的值(示例代码)
2013/12/24 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
vue实例中data使用return包裹的方法
2018/08/27 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
基于FME使用Python过程图解
2020/05/13 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
乡镇保密工作责任书
2014/07/28 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
加薪通知
2015/04/25 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
生死抉择观后感
2015/06/09 职场文书
CAD实训总结范文
2015/08/03 职场文书
《学会看病》教学反思
2016/02/17 职场文书
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫