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 相关文章推荐
JSQL  一个 web DB 的封装
May 05 Javascript
Js 冒泡事件阻止实现代码
Jan 27 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
Jan 11 Javascript
JavaScript实现多个重叠层点击切换效果的方法
Apr 24 Javascript
js实现简洁的TAB滑动门效果代码
Sep 06 Javascript
Bootstrap 源代码分析(未完待续)
Aug 17 Javascript
概述VUE2.0不可忽视的很多变化
Sep 25 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
Nov 01 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
jquery ztree实现右键收藏功能
Nov 20 jQuery
Vue匿名插槽与作用域插槽的合并和覆盖行为
Apr 22 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
Aug 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
Apache2 httpd.conf 中文版
2006/12/06 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
XENON基于JSON变种
2010/07/27 Javascript
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
2013/12/14 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
部署Python的框架下的web app的详细教程
2015/04/30 Python
详解Python中break语句的用法
2015/05/14 Python
Python的语言类型(详解)
2017/06/24 Python
Python登录系统界面实现详解
2019/06/25 Python
python zip()函数使用方法解析
2019/10/31 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
班级入场式解说词
2014/02/01 职场文书
超市中秋节促销方案
2014/03/21 职场文书
安全生产管理责任书
2014/04/16 职场文书
高中家长意见怎么写
2015/06/03 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python