Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅允许单触式jQuery触摸屏_Javascript_Jquery - Fatal编程技术网

Javascript 仅允许单触式jQuery触摸屏

Javascript 仅允许单触式jQuery触摸屏,javascript,jquery,Javascript,Jquery,我正在使用HP触摸屏台式电脑,开发一个简单的网站。我想防止用户一次用八个手指“捣碎”屏幕。jQuery中是否有一种方法允许一次只注册一个触摸事件?因此,当第一个手指点击屏幕时,即已注册的手指,所有其他触摸都将被忽略,直到该手指到达一个touchend?在点击后禁用输入类型(按钮、文本框等),在逻辑完成后启用它 编辑:如果要在触发touchend之前禁用所有触摸事件,请尝试以下操作: var isProcessing = false; $(document).on("touchstart",fu

我正在使用HP触摸屏台式电脑,开发一个简单的网站。我想防止用户一次用八个手指“捣碎”屏幕。jQuery中是否有一种方法允许一次只注册一个触摸事件?因此,当第一个手指点击屏幕时,即已注册的手指,所有其他触摸都将被忽略,直到该手指到达一个
touchend

在点击后禁用输入类型(按钮、文本框等),在逻辑完成后启用它

编辑:如果要在触发touchend之前禁用所有触摸事件,请尝试以下操作:

var isProcessing = false;

$(document).on("touchstart",function(e){
    e.preventDefault();
    if(!isProcessing){
        isProcessing = true;
        //Do your stuff here
    }    
});

$(document).on("touchend",function(e){
    e.preventDefault();
    isProcessing = false; 
});

好的,下面是我使用的解决方案:

var isTouched = false;
var $document = $(document);

$document.on('touchstart', function () {
    if (!isTouched) {
        isTouched = true;
        $document.off('touchstart', function () {
            $document.on('touchend', function () {
                isTouched = false;
                $document.bind('touchstart');
            });
        });
     }
});

它不一定是一个按钮,而是整个屏幕。我想不出一种方法,如果
主体
接收到触摸启动事件,设置一个标志,并处理触摸动作。如果设置了标志,则忽略触摸。当出现
touchend
时,重置标志。更新我的答案,我认为我们的想法是一致的。是的,这更接近。但是我认为
touchend
需要在
if
中的回调中。我还需要将
.off()
应用于
touchstart
,并在重置标志后重新绑定。我不知道应用程序的范围,但这是防止多次触摸所需的基本逻辑。按您认为合适的方式应用。:)