jQuery:当用户的手指触摸元素时阻止页面滚动

时间:2014-06-29 06:54:18

标签: javascript jquery firefox jquery-mobile

我使用以下jQuery插件:http://willowsystems.github.io/jSignature/

我试图做一些非常简单的事情,即当用户的手指在签名区域内时停止页面滚动(在手机上写签名时的页面移动极其糟糕到这一点你根本不能写你的签名。我尝试过以下不适用于Firefox的内容,我不确定原因:

$('.signature').on('touchmove', function(e) {
        e.preventDefault();
    });

我也试过这个也没有工作:

$(document).delegate('.signature', 'touchmove', false);

我已经搜索了几个小时,但我似乎找不到任何可行的方法。如果需要更多细节,请告诉我,我很乐意附上这个问题。

非常感谢大家的帮助。

编辑:我在手机上使用了最新版本的Firefox。

2 个答案:

答案 0 :(得分:0)

尝试在html元素的e.preventDefault()上使用ontouchmove

<div class="signature" ontouchmove="event.preventDefault();">

</div>

这个例子对我有用: http://jsbin.com/pulul/1/edit?html,css,output

答案 1 :(得分:0)

在Android浏览器上的字段中存在同样的问题。捕获签名获取点而不是sig。所以,在浏览器中测试我看到当我用鼠标点击进入jSignature时,焦点永远不会丢失。所以,尝试这样的事情:

onblur="if(this.value.length>1) document.getElementById('CustomerSignature').focus()"

Welp,当你触摸你的jSignature时,你会看到onblur不会发火,但是当你触摸其他区域时它会发射。你去吧。还没有能够重现在平板电脑上报告给我的确切错误;但我认为滚动被发送给另一个元素。

因此,修复是强制焦点更改为jSignature。那就是我所想的。 现在,我摆弄了HTML,所以我的最后一个字段是select,并使用onchange将焦点设置为我的jSig。