From 7e4c0f433d0b31687d8fe6d00eec788b37cecef1 Mon Sep 17 00:00:00 2001 From: Collin RM Stocks Date: Thu, 12 Mar 2015 09:31:53 -0400 Subject: [PATCH 1/2] Fix touch support. In case we are dragging something clickable, preventDefault on drag, not on mousedown/touchstart. --- source/js/jquery-sortable.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/source/js/jquery-sortable.js b/source/js/jquery-sortable.js index 52c2432..6a7f2d7 100644 --- a/source/js/jquery-sortable.js +++ b/source/js/jquery-sortable.js @@ -86,6 +86,7 @@ // The Placeholder has not been moved yet. onDrag: function ($item, position, _super, event) { $item.css(position) + event.preventDefault() }, // Called after the drag has been started, // that is the mouse button is beeing held down and @@ -109,7 +110,6 @@ // Ignore if element clicked is input, select or textarea onMousedown: function ($item, _super, event) { if (!event.target.nodeName.match(/^(input|select|textarea)$/i)) { - event.preventDefault() return true } }, @@ -254,7 +254,7 @@ this.item = closestItem; this.itemContainer = itemContainer; if (this.item.is(this.options.exclude) || !this.options.onMousedown(this.item, groupDefaults.onMousedown, e)) { - return; + return; } this.setPointer(e); this.toggleListeners('on'); @@ -401,10 +401,11 @@ ) >= this.options.distance) }, getPointer: function(e) { - var o = e.originalEvent || e.originalEvent.touches && e.originalEvent.touches[0] + var o = e.originalEvent, + t = (e.originalEvent.touches && e.originalEvent.touches[0]) || {}; return { - left: e.pageX || o.pageX, - top: e.pageY || o.pageY + left: e.pageX || o.pageX || t.pageX, + top: e.pageY || o.pageY || t.pageY } }, setupDelayTimer: function () { From 9bb72689b83520bfaeca9f2440ecc92cb46c01ef Mon Sep 17 00:00:00 2001 From: Collin RM Stocks Date: Thu, 12 Mar 2015 14:24:50 -0400 Subject: [PATCH 2/2] mousedown events should be cancelled, but touchstart events should not --- source/js/jquery-sortable.js | 1 + 1 file changed, 1 insertion(+) diff --git a/source/js/jquery-sortable.js b/source/js/jquery-sortable.js index 6a7f2d7..e861e68 100644 --- a/source/js/jquery-sortable.js +++ b/source/js/jquery-sortable.js @@ -110,6 +110,7 @@ // Ignore if element clicked is input, select or textarea onMousedown: function ($item, _super, event) { if (!event.target.nodeName.match(/^(input|select|textarea)$/i)) { + if (event.type.match(/^mouse/)) event.preventDefault() return true } },