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 相关文章推荐
javaScript 简单验证代码(用户名,密码,邮箱)
Sep 28 Javascript
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
使用JavaScript 实现各种跨域的方法
May 08 Javascript
JavaScript判断IE版本型号
Jul 27 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
Dec 04 Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 Javascript
Node.js 基础教程之全局对象
Aug 06 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
Aug 15 jQuery
基于JavaScript实现评论框展开和隐藏功能
Aug 25 Javascript
深入理解Node.js中通用基础设计模式
Sep 19 Javascript
vue-router命名视图的使用讲解
Jan 19 Javascript
vue组件是如何解析及渲染的?
Jan 13 Vue.js
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
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
PHP 最大运行时间 max_execution_time修改方法
2010/03/08 PHP
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
Laravel下生成验证码的类
2017/11/15 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
Javascript Select操作大集合
2009/05/26 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
python中使用print输出中文的方法
2018/07/16 Python
python中字符串内置函数的用法总结
2018/09/13 Python
python安装pywin32clipboard的操作方法
2019/01/24 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
加热夹克:RAVEAN
2018/10/19 全球购物
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
趣味运动会简讯
2015/07/20 职场文书
教你使用TensorFlow2识别验证码
2021/06/11 Python