(59) 解决在列表视图复制导致打开详细内容
现象:
在列表视图中,当你要复制一个内容,就触发click事件,就打开form视图了
为了区分click mousedown mousemove muuseup 事件,从而放弃click事件
用后面那几个事件组合来解决是要打开,还是复制内容事件
改动代码如下:
\addons\web\static\src\js\view_list.js
var hasMove =false;
this.$current = $('<tbody>')
.delegate('input[readonly=readonly]', 'click', function (e) {
/*
Against all logic and sense, as of right now @readonly
apparently does nothing on checkbox and radio inputs, so
the trick of using @readonly to have, well, readonly
checkboxes (which still let clicks go through) does not
work out of the box. We *still* need to preventDefault()
on the event, otherwise the checkbox's state *will* toggle
on click
*/
e.preventDefault();
})
.delegate('th.oe_list_record_selector', 'click', function (e) {
e.stopPropagation();
var selection = self.get_selection();
var checked = $(e.currentTarget).find('input').prop('checked');
$(self).trigger(
'selected', [selection.ids, selection.records, ! checked]);
})
.delegate('td.oe_list_record_delete button', 'click', function (e) {
e.stopPropagation();
var $row = $(e.target).closest('tr');
$(self).trigger('deleted', [[self.row_id($row)]]);
})
.delegate('td.oe_list_field_cell button', 'click', function (e) {
e.stopPropagation();
var $target = $(e.currentTarget),
field = $target.closest('td').data('field'),
$row = $target.closest('tr'),
record_id = self.row_id($row);
if ($target.attr('disabled')) {
return;
}
$target.attr('disabled', 'disabled');
// note: $.data converts data to number if it's composed only
// of digits, nice when storing actual numbers, not nice when
// storing strings composed only of digits. Force the action
// name to be a string
$(self).trigger('action', [field.toString(), record_id, function (id) {
$target.removeAttr('disabled');
return self.reload_record(self.records.get(id));
}]);
})
.delegate('a', 'click', function (e) {
e.stopPropagation();
})
.delegate('tr', 'mousedown', function (e) {
if (e.button ==0){
hasMove=false;
}else {
hasMove=true;
}
})
.delegate('tr', 'mousemove', function (e) {
hasMove=true;
})
.delegate('tr', 'mouseup', function (e) {
if (hasMove || (e.srcElement.type && e.srcElement.type=='checkbox')){
}else{
var row_id = self.row_id(e.currentTarget);
if (row_id) {
e.stopPropagation();
if (!self.dataset.select_id(row_id)) {
throw new Error(_t("Could not find id in dataset"));
}
self.row_clicked(e);
}
}
hasMove =false;
});
====================================
上面是一种解决方案,但当ommousemove 事件,移动鼠标触发事件过多,导致客户端会死掉,最终用下面的方法
得到较好的解决
当鼠标移动时,有复制到内容,则不进入详细面,判断没有内容来决定:
\addons\web\static\src\js\view_list.js
.delegate('tr', 'click', function (e) {
var txt = window.getSelection?window.getSelection():document.selection.createRange().text;
if (txt!=''){
e.stopPropagation();
}else{
var row_id = self.row_id(e.currentTarget);
if (row_id) {
e.stopPropagation();
if (!self.dataset.select_id(row_id)) {
throw new Error(_t("Could not find id in dataset"));
}
self.row_clicked(e);
}
}
});
转载于:https://www.cnblogs.com/toby2chen/p/8177267.html
(59) 解决在列表视图复制导致打开详细内容相关推荐
- 通过代码解决SharePoint列表视图权限分配问题
最近被SharePoint列表视图分权限的问题困扰着,在网上搜到些解决方案,比较不错的是Bewise.SharePoint.SPViewPermissionSetting的解决方案,但是在修改视图权限 ...
- drop 很慢 物化视图_终于解决了物化视图复制的问题
今天真是个高兴的日子.刚回到公司就被技术总监拉了过去,给我展示研发的最近成果.好久没看到他如此轻松的神情,因为就在今天,一个关键的技术问题 -- 物化视图 materialized view--被他搞 ...
- odoo10参考系列--视图一(列表视图)
共同结构--一般视图都有的 视图对象公开了多个字段,除非另有说明,否则它们是可选的. name (强制性的) 在对某个列表进行查找时,仅作为对视图的一种记忆/描述是有用的 model 与视图关联的模型 ...
- 【记录】IDEA未正确关闭导致打开报错,进不了主界面,含解决办法
[记录]IDEA未正确关闭导致打开报错,进不了主界面,含解决办法 错误提示 解决方案 参考 错误提示 截取了错误的主要部分 java.util.concurrent.CompletionExcepti ...
- 解决Windows资源管理器右键菜单打开EditPlus容易导致资源管理器无响应问题
解决Windows资源管理器右键菜单打开EditPlus容易导致资源管理器无响应问题 参考文章: (1)解决Windows资源管理器右键菜单打开EditPlus容易导致资源管理器无响应问题 (2)ht ...
- Pycharm打开Project(工程)时停留在preparing workspace时间过长,导致打开很慢的解决方法...
Pycharm打开Project(工程)时停留在preparing workspace时间过长,导致打开很慢的解决方法- 昊虹君用Pycharm进行Python的开发,一直用得好好的,也没作过什么异常 ...
- ODPS主备集群双向数据复制导致主备中心网络打爆问题
简介:ODPS主备集群双向数据复制导致主备中心网络打爆问题 1. 故障问题描述 客户现场发生了ODPS主备机房相互数据全量复制导致的主备中心网络被打爆的问题,严重影响了日常运行的ODPS任务.在ODP ...
- android 复杂的列表视图新写法MultiType
从前,比如我们写一个类似微博列表页面,这样的列表是十分复杂的:有纯文本的.带转发原文的.带图片的.带视频的.带文章的等等,甚至穿插一条可以横向滑动的好友推荐条目.不同的 item 类型众多,而且随着业 ...
- 解决MySQL事务未提交导致死锁报错 避免死锁的方法
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/xuheng8600/article/d ...
最新文章
- Oracle procedure
- php facade模,PHP 设计模式之外观模式 Facade
- linux boost内存池,C++ boost库教程之内存池
- perl学习之:localtime
- 摆脱科技僵尸,回归生龙活虎
- Falsk session 源码解析
- 【职场】高薪的条件你满足几条?
- Mybatis 原始Dao层开发
- 太惨了!卖一个月不如小米卖一天,手机一哥仍不甘心
- 是谁逼着我们996,逼着企业996
- 前端实习4个月的心得(uniapp)
- 浏览器禁用第三方Cookie
- 检索网络方向的学生选修先行课为计算机网络,等价的关系代数表达式,其执行效率也是一样的。...
- yum源解释(接地气)
- 【UE4】导入FBX格式的模型至UE4
- EXCEL横向表格如何调整为纵向表格?
- 十分钟了解物联网主流通信协议
- 【工作日记】这一年来完全用Linux工作的感受
- A hard puzzle(HDU1097)(快速幂取模)
- 考研计算机C语言算法视频,计算机算法考研视频哪个好
热门文章
- Android]Android字体高度的研究
- no signatures that match those in shared user android.uid.system; ignoring!
- 【Android】安装时, 先拷so主目录(当前设备相关),再拷so次目录,不重复拷贝 (armeabi/armeabi-v7a) arm-v7不兼容arm-v5
- Flutter 中的Error的捕获及处理
- [转]linux下TCP连接占用的资源
- 用maven搭建 testNG+PowerMock+Mockito测试框架
- find 命令的参数详解
- LUA 拾遗(编译-调试-运行)
- silverlight mediaElement 动态添加source
- Eclipse创建JavaWeb工程