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实现在Repeater控件中创建可隐藏区域的代码
Sep 16 Javascript
ASP.NET中AJAX 调用实例代码
May 03 Javascript
jQuery实现带有洗牌效果的动画分页实例
Aug 31 Javascript
纯javascript实现自动发送邮件
Oct 21 Javascript
jQuery实现的瀑布流加载效果示例
Sep 13 Javascript
详解handlebars+require基本使用方法
Dec 21 Javascript
树结构之JavaScript
Jan 24 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
Apr 05 Javascript
JavaScript比较同一天的时间大小实例代码
Feb 09 Javascript
vue.js动画中的js钩子函数的实现
Jul 06 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
Sep 11 Javascript
React 实现车牌键盘的示例代码
Dec 20 Javascript
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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
写一个用户在线显示的程序
2006/10/09 PHP
PHP新手上路(四)
2006/10/09 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
jquery tools系列 expose 学习
2009/09/06 Javascript
js css样式操作代码(批量操作)
2009/10/09 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
2015/09/01 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
2016/08/05 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
python技能之数据导出excel的实例代码
2017/08/11 Python
python树的同构学习笔记
2019/09/14 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
pandas数据处理之绘图的实现
2020/06/15 Python
Python Django路径配置实现过程解析
2020/11/05 Python
python装饰器代码深入讲解
2021/03/01 Python
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
Java基础面试题
2014/07/19 面试题
教育系统干部作风整顿心得体会
2014/09/09 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
管理失职检讨书
2015/05/05 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
Echarts如何重新渲染实例详解
2022/05/30 Javascript