diff --git a/js/ext/angular/test/clickTests.html b/js/ext/angular/test/clickTests.html index f5137df082..932bf533e1 100644 --- a/js/ext/angular/test/clickTests.html +++ b/js/ext/angular/test/clickTests.html @@ -68,8 +68,13 @@ - +   +   + +   + @@ -241,7 +246,7 @@ // console.debug('mousemove', 'clientX: ' + event.clientX, 'clientY: ' + event.clientY); // }); document.addEventListener('click', function(event){ - console.debug('click', 'clientX: ' + event.clientX, 'clientY: ' + event.clientY); + console.debug('click', 'clientX: ' + event.clientX, 'clientY: ' + event.clientY, event.target.tagName); }); document.getElementById('clear').addEventListener('click', function(){ setTimeout(clearMsgs, 200); diff --git a/js/utils/poly.js b/js/utils/poly.js index 3b9c9dafe0..0d138c23a6 100644 --- a/js/utils/poly.js +++ b/js/utils/poly.js @@ -18,8 +18,11 @@ })(); // polyfill use to simulate native "tap" - ionic.tapElement = function(ele, e) { + ionic.tapElement = function(target, e) { // simulate a normal click by running the element's click method then focus on it + + var ele = target.control || target; + if(ele.disabled) return; console.debug('tapElement', ele.tagName, ele.className); @@ -46,6 +49,11 @@ if( !isRecentTap(e) ) { recordCoordinates(e); } + + if(target.control) { + console.debug('tapElement, target.control, stop'); + return stopEvent(e); + } }; function tapPolyfill(orgEvent) { @@ -66,16 +74,11 @@ if( ele.tagName === "INPUT" || ele.tagName === "A" || ele.tagName === "BUTTON" || + ele.tagName === "LABEL" || ele.tagName === "TEXTAREA" || ele.tagName === "SELECT" ) { return ionic.tapElement(ele, e); - - } else if( ele.tagName === "LABEL" ) { - // check if the tapped label has an input associated to it - if(ele.control) { - return ionic.tapElement(ele.control, e); - } } ele = ele.parentElement; } @@ -158,13 +161,9 @@ function removeClickPrevent(e) { setTimeout(function(){ - if(e.target && e.target.control && e.target.control.labelLastTap) { - e.target.control.labelLastTap = null; - } - var c = isRecentTap(e); - if(c) delete tapCoordinates[c.id]; + var tap = isRecentTap(e); + if(tap) delete tapCoordinates[tap.id]; }, REMOVE_PREVENT_DELAY); - return stopEvent(e); } function stopEvent(e){