Skip to content

Commit 66ecec7

Browse files
committed
fix(scroll): Fix input focus when tapped, do not scroll when target is an input, closes #1020
1 parent 7851009 commit 66ecec7

File tree

3 files changed

+70
-7
lines changed

3 files changed

+70
-7
lines changed

js/ext/angular/test/input.html

+65-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<html ng-app="navTest">
22
<head>
33
<meta charset="utf-8">
4-
<title>Checkbox</title>
4+
<title>Inputs</title>
55
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
66
<link rel="stylesheet" href="../../../../dist/css/ionic.css">
77
<style>
@@ -24,7 +24,9 @@
2424
<input type="text" value="header input">
2525
</label>
2626
</header>
27-
<ion-content class="has-header" padding="true" overflow-scroll="false">
27+
28+
<ion-content class="has-header padding">
29+
2830
<div class="list">
2931
<label class="item item-input">
3032
<span class="input-label">Your Name</span>
@@ -53,6 +55,66 @@
5355
<textarea id="textarea">comment textarea</textarea>
5456
</label>
5557

58+
<label class="item item-input">
59+
<span class="input-label">From</span>
60+
<input type="text" value="">
61+
</label>
62+
63+
<label class="item item-input">
64+
<span class="input-label">To</span>
65+
<input type="text" value="">
66+
</label>
67+
68+
<label class="item item-input item-stacked-label">
69+
<span class="input-label">Comment</span>
70+
<textarea id="textarea"></textarea>
71+
</label>
72+
73+
<label class="item item-input">
74+
<span class="input-label">From</span>
75+
<input type="text" value="">
76+
</label>
77+
78+
<label class="item item-input">
79+
<span class="input-label">To</span>
80+
<input type="text" value="">
81+
</label>
82+
83+
<label class="item item-input item-stacked-label">
84+
<span class="input-label">Comment</span>
85+
<textarea id="textarea"></textarea>
86+
</label>
87+
88+
<label class="item item-input">
89+
<span class="input-label">From</span>
90+
<input type="text" value="">
91+
</label>
92+
93+
<label class="item item-input">
94+
<span class="input-label">To</span>
95+
<input type="text" value="">
96+
</label>
97+
98+
<label class="item item-input item-stacked-label">
99+
<span class="input-label">Comment</span>
100+
<textarea id="textarea"></textarea>
101+
</label>
102+
103+
<label class="item item-input">
104+
<span class="input-label">From</span>
105+
<input type="text" value="">
106+
</label>
107+
108+
<label class="item item-input">
109+
<span class="input-label">To</span>
110+
<input type="text" value="">
111+
</label>
112+
113+
<label class="item item-input item-stacked-label">
114+
<span class="input-label">Comment</span>
115+
<textarea id="textarea"></textarea>
116+
</label>
117+
56118
<button class="button button-block button-energized" ng-click="openModal()">
57119
Open Modal
58120
</button>
@@ -98,7 +160,7 @@ <h1 class="title">New Contact</h1>
98160

99161
var msgs = [];
100162
var timerId;
101-
console.debug = function() {
163+
console.debug2 = function() {
102164
var msg = [];
103165
for (var i = 0, j = arguments.length; i < j; i++){
104166
msg.push(arguments[i]);

js/utils/tap.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@
2222
ele.dispatchEvent(clickEvent);
2323

2424
if(ele.tagName === 'INPUT' || ele.tagName === 'TEXTAREA') {
25-
ele.focus();
25+
if(ele.selectionStart === 0 && ele.selectionEnd === 0 && !isScrolledSinceStart(e)) {
26+
ele.focus();
27+
ele.setSelectionRange && ele.setSelectionRange(ele.value.length, ele.value.length);
28+
}
2629
e.preventDefault();
2730
} else {
2831
blurActive();

js/views/scrollView.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -617,13 +617,11 @@ ionic.views.Scroll = ionic.views.View.inherit({
617617
});
618618

619619
function shouldIgnorePress(e) {
620-
// Don't react if initial down happens on a form element
621-
return e.target.tagName.match(/object|embed/i) ||
620+
return e.target.tagName.match(/input|textarea|select|object|embed/i) ||
622621
e.target.isContentEditable ||
623622
(e.target.dataset ? e.target.dataset.preventScroll : e.target.getAttribute('data-prevent-default') == 'true');
624623
}
625624

626-
627625
if ('ontouchstart' in window) {
628626

629627
container.addEventListener("touchstart", function(e) {

0 commit comments

Comments
 (0)