diff --git a/js/ext/angular/test/service/ionicTap.unit.js b/js/ext/angular/test/service/ionicTap.unit.js index f80e927bd2..6d2e16cc99 100644 --- a/js/ext/angular/test/service/ionicTap.unit.js +++ b/js/ext/angular/test/service/ionicTap.unit.js @@ -98,7 +98,8 @@ describe('Ionic Tap', function() { var targetEle = { dispatchEvent: function(clickEvent) { this.clickEvent = clickEvent; - } + }, + tagName: 'LABEL' }; var e = { clientX: 99, clientY: 88 }; ionic.tap.simulateClick(targetEle, e); diff --git a/js/utils/tap.js b/js/utils/tap.js index 40a4108c47..488e1bca08 100644 --- a/js/utils/tap.js +++ b/js/utils/tap.js @@ -34,12 +34,7 @@ // only climb up a max of 5 parents, anything more probably isn't beneficial if(!ele) break; - if( ele.tagName === "INPUT" || - ele.tagName === "A" || - ele.tagName === "BUTTON" || - ele.tagName === "LABEL" || - ele.tagName === "TEXTAREA" ) { - + if( ele.tagName.match(/a|input|button|label|textarea|select/i) ) { return ionic.tap.simulateClick(ele, e); } ele = ele.parentElement; @@ -73,9 +68,12 @@ ele.dispatchEvent(clickEvent); - if(ele.tagName === 'INPUT' || ele.tagName === 'TEXTAREA') { + if( ele.tagName.match(/input|textarea/i) ) { ele.focus(); e.preventDefault(); + } else if( ele.tagName == 'SELECT' ) { + // select simulateClick should not preventDefault or else no options dialog + ele.focus(); } else { ionic.tap.blurActive(); } diff --git a/test/html/input-select.html b/test/html/input-select.html index db5cbf100f..1ab90b04d0 100644 --- a/test/html/input-select.html +++ b/test/html/input-select.html @@ -4,6 +4,7 @@