【问题标题】:How to Enable Long-Touch on Mobile Devices如何在移动设备上启用长触
【发布时间】: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


    【解决方案1】:

    我看不到您的演示,但是,我相信您正在寻找Hammer.js,更具体地说是Press Recognizer。您应该能够修改当前的单击处理程序以使用 Hammer 事件。我希望这能为您指明正确的方向。

    【讨论】:

    • 谢谢,如果可能的话,我正在尝试在没有其他外部 .JS 的情况下执行此操作。我已经在使用 4 了。也一直在尝试使用 if 循环将 targetState 变量设置为不同的值,只需使用左键单击,但这也不起作用。我想也许还有更多的代码可以防止这种情况发生,所以我需要尝试找到它。如果我不能让它工作,我会仔细看看锤子。谢谢。
    • 我查看了hammer.js,但代码都在一行中,让我无法阅读。它在布局以可读方式跨越多行的其他任何地方都可用吗?
    • 查看文档,但这个示例应该对您有所帮助:codepen.io/jtangelder/pen/lgELw
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 2014-01-04
    • 2014-04-22
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多