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常见表单应用技巧
Jan 09 Javascript
通过Mootools 1.2来操纵HTML DOM元素
Sep 15 Javascript
Jquery调用webService远程访问出错的解决方法
May 21 Javascript
上传文件返回的json数据会被提示下载问题解决方案
Dec 03 Javascript
JavaScript 数组的深度复制解析
Nov 02 Javascript
深入学习Bootstrap表单
Dec 13 Javascript
基于JavaScript实现淘宝商品广告效果
Aug 10 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 jQuery
JS代码实现电脑配置检测功能
Mar 21 Javascript
用Angular实现一个扫雷的游戏示例
May 15 Javascript
vue单文件组件无法获取$refs的问题
Jun 24 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
Nov 10 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
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php错误级别的设置方法
2013/06/17 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
DOM相关内容速查手册
2007/02/07 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
全面理解闭包机制
2016/07/11 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
Python实现把回车符\r\n转换成\n
2015/04/23 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
深入浅析Python中的迭代器
2019/06/04 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
DeinDesign德国:设计自己的手机壳
2019/12/14 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
网络编辑职责
2014/03/01 职场文书
合作意向书模板
2014/03/31 职场文书
营业用房租赁协议书
2014/11/26 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫