首页 > 其他 > 详细

给自己的提醒

时间:2019-09-16 11:17:01      阅读:71      评论:0      收藏:0      [点我收藏+]

场景:

  有一个列表页面,选中不同行时,根据当前行的状态有不同的按钮可操作,且操作有前后逻辑顺序;

问题:

  当选中A时,对应按钮由disabled转为可操作,选中B时,对应按钮转为可操作,但A的操作按钮也属于可操作状态;

原因:

  默认button添加disabled属性,js中判断选中后,获取对应状态,根据对应状态将disabled用prop转为false;

解决:

  后台有相应校验,即使出现如此问题,后台也会返回错误信息,不会影响业务,但前台感官不好,故打算修改;

  使用的bootstrap框架,初打算每次选中后刷新页面,从而重置按钮状态:

 1 $(‘#settlementTable‘).on(‘check.bs.table uncheck.bs.table load-success.bs.table ‘ +
 2             ‘check-all.bs.table uncheck-all.bs.table‘, function () {
 3         refresh(); 4         let status = getStatusSelections();
 5         if (status) {
 6             if (status == 0) {
 7                 $(‘#remove‘).prop(‘disabled‘, !$(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length);
 8                 $(‘#edit‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
 9                 $(‘#confirm‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
10             } else if (status == 1) {
11                 $(‘#cancel‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
12                 $(‘#printing‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
13                 $(‘#export‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
14             } else {
15                 $(‘#export‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
16             }
17         }
18     });

  结果会导致页面一直在刷新,无法选中,苦思冥想如何刷新页面;

  突然灵光一现,目的是让按钮状态重置,不一定需要刷新页面,后改为如下:

 1 $(‘#settlementTable‘).on(‘check.bs.table uncheck.bs.table load-success.bs.table ‘ +
 2             ‘check-all.bs.table uncheck-all.bs.table‘, function () {
 3         $(‘#remove,#edit,#confirm,#cancel,#printing,#export‘).prop(‘disabled‘, true);
 4         let status = getStatusSelections();
 5         if (status) {
 6             if (status == 0) {
 7                 $(‘#remove‘).prop(‘disabled‘, !$(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length);
 8                 $(‘#edit‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
 9                 $(‘#confirm‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
10             } else if (status == 1) {
11                 $(‘#cancel‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
12                 $(‘#printing‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
13                 $(‘#export‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
14             } else {
15                 $(‘#export‘).prop(‘disabled‘, $(‘#settlementTable‘).bootstrapTable(‘getSelections‘).length != 1);
16             }
17         }
18     });

  故此,每次选中后会先将按钮状态统一置为disabled,之后根据选中状态相应调整按钮属性。

  记录主要目的是提醒自己,思路要灵活一点!

附:

  刚开始多个id时写了多行代码:

1    $(‘#remove‘).prop(‘disabled‘, true);
2     $(‘#remove‘).prop(‘disabled‘, true);
3     $(‘#remove‘).prop(‘disabled‘, true);
4     $(‘#remove‘).prop(‘disabled‘, true);
5     $(‘#remove‘).prop(‘disabled‘, true);
6     $(‘#remove‘).prop(‘disabled‘, true);
7     $(‘#remove‘).prop(‘disabled‘, true);

  类比与此,后百度了多个id同事设置的方式,遂改为如下:

 1 $(‘#remove,#edit,#confirm,#cancel,#printing,#export‘).prop(‘disabled‘, true); 

  一行解决问题。

 

给自己的提醒

原文:https://www.cnblogs.com/JillisRealM/p/11525669.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!