【发布时间】:2019-08-13 10:21:58
【问题描述】:
我正在尝试获取我下载的时间表演示应用程序,以便右键单击事件在移动触摸屏上运行(长按触摸)。 该应用程序是一个 jQuery 表(我已对其进行了修改,以便它可以编辑和保存时间表),其中 1 或 0 的值根据 css 中的设置设置背景颜色。 您可以单击或右键单击列标题(以用颜色填充整个列)或单个单元格以更改其颜色。 除了在移动浏览器中单击鼠标右键外,这一切都完美无缺。一切都在桌面浏览器上运行,但由于该应用程序只能在移动浏览器中使用,所以用处不大。 最初长按时触摸屏上什么都没有发生(什么都不可见),但后来我禁用了右键单击代码以隐藏上下文菜单,现在屏幕在按下单元格约 500 毫秒后会立即闪烁。 所以它试图做点什么?但我真的很想再次禁用它。
我真的不知道从哪里开始。我看到的所有示例代码似乎都是从新开始,而不是编辑现有代码(看起来与我在任何示例中看到的完全不同)。 我真的希望这最终能够工作,所以左键单击选择一种颜色,下一次左键单击选择另一种颜色。 但是现在触摸屏工作的右键单击/长按事件会很棒。
这是解释点击并将变量设置为 1 或 0 的代码(我相信):
if(key[0]===1){ targetState = 1;} //Left mouse button to set the selected area to 1
else if(key[0]===3){ targetState = 0;} //Right mouse button to set the selected area to 0
它来自这个更大的代码块(如果有帮助,我可以发布更多):
var afterSelecting = function(ev,targetArea){
var curDom = $(ev.currentTarget);
var key = $(ev.which);
var targetState = undefined;
if(key[0]===1){ targetState = 1;} //Left mouse button to set the selected area to 1
else if(key[0]===3){ targetState = 0;} //Right mouse button to set the selected area to 0
if(isSelecting && curDom.hasClass("TimeSheet-cell") || isColSelecting && curDom.hasClass("TimeSheet-colHead")){
sheetModel.set(targetState,{
startCell : targetArea.topLeft,
endCell : targetArea.bottomRight
});
removeSelecting();
repaintSheet();
if(sheetOption.end){
sheetOption.end(ev,targetArea);
}
}else{
removeSelecting();
}
isSelecting = false;
isColSelecting = false;
operationArea = {
startCell : undefined,
endCell : undefined
}
};
或应用程序的测试/演示在这里可以查看文件(在 chrome、firefox 和 edge 中测试为工作)并且需要启用 cookie 以从日历中设置时间表的日期。:
(验证演示:demo99) http://flakie.epizy.com
要让演示生效,您必须从日历中选择一个星期日,然后选择下一个星期六。
【问题讨论】:
标签: javascript jquery touch mouseevent