Jquery Mobile滑动事件导致输入框中的文本无法被拖动。
Jquery Mobile滑动事件导致输入框中的文本无法被拖动。
我不特别想使用Jquery Mobile,因为我只用它来实现左滑和右滑功能。但它是我找到的唯一一个能与动态添加内容的类和on方法一起使用的触摸事件库。我曾经使用下载器来获取我当时所需的内容(记不清是什么),但那是一段时间前的事了,而且下载器现在已经损坏了,所以最近我在这里找到了一个只包含触摸事件的评论。然而,它仍然导致了这个问题。链接为:https://stackoverflow.com/a/51800929/11773633
我遇到的问题是,如果我在任何地方至少声明一次swipeleft和swiperight,不管它是否影响页面上的内容...都会导致输入框和文本区域无法从字段内部拖动选择文本,而且还无法在文本本身上进行拖动...它只能选择3个字符。
这是一个带有示例的jsfiddle。我在html部分链接了那个只包含触摸事件的Jquery Mobile v1.4.5版本。我还使用了Jquery 2.2.4版本,所以已设置好。
$(document).on('touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop','textarea', function(event) { return false; });
我只是想找到修复输入字段拖动选择文本问题的方法...但似乎无法阻止这个脚本所做的改变输入字段拖动的方式。只要使用了swipe,就会导致这个问题。
问题原因:scrollSupressionThreshold参数的值被设置为30,这个值会影响到所有元素,不管它们是否被选中。虽然不清楚这个阈值在整个过程中的作用,但通过将其设置为一个非常大的数字,如指数表示法1e9,可以完全解决输入字段的问题。
解决方法:将scrollSupressionThreshold的值从30改为1e9。
文章整理如下:
我不确定这个问题会对事情产生什么影响...但是经过深入挖掘,罪魁祸首竟然是scrollSupressionThreshold。它被设置为30,由于某种原因,它会影响到所有的元素,无论它们是否被选中。我不清楚这个阈值在整个过程中的作用是什么,但是通过将其设置为一个非常大的数字,比如指数表示法1e9,可以完全解决输入字段的所有问题。我确信这个问题可能会回过头来找我麻烦,但是滑动仍然可以正常工作,这也是我想要的结果。
e.event.special.swipe = { scrollSupressionThreshold: **(将30改为1e9)**, durationThreshold: 1e3, horizontalDistanceThreshold: 30, verticalDistanceThreshold: 30, }