Skip to content

Commit 50685b9

Browse files
authoredMay 19, 2020
- fix creditCarStrictMode (no way to delete the 16th digit of a visa) (nosir#582)
- tested on window (edge, firefox, opera, chrome) - tested on mobile Android (edge, chrome, vivaldi, opera, opera mini, firefox) - tested on Iphone (safari)
1 parent 3f773c4 commit 50685b9

File tree

1 file changed

+15
-18
lines changed

1 file changed

+15
-18
lines changed
 

‎src/Cleave.js

+15-18
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ Cleave.prototype = {
5757

5858
owner.isAndroid = Cleave.Util.isAndroid();
5959
owner.lastInputValue = '';
60+
owner.isBackward = '';
6061

6162
owner.onChangeListener = owner.onChange.bind(owner);
6263
owner.onKeyDownListener = owner.onKeyDown.bind(owner);
@@ -166,38 +167,34 @@ Cleave.prototype = {
166167
},
167168

168169
onKeyDown: function (event) {
170+
var owner = this,
171+
charCode = event.which || event.keyCode;
172+
173+
owner.lastInputValue = owner.element.value;
174+
owner.isBackward = charCode === 8;
175+
},
176+
177+
onChange: function (event) {
169178
var owner = this, pps = owner.properties,
170-
charCode = event.which || event.keyCode,
171-
Util = Cleave.Util,
172-
currentValue = owner.element.value;
173-
174-
// if we got any charCode === 8, this means, that this device correctly
175-
// sends backspace keys in event, so we do not need to apply any hacks
176-
owner.hasBackspaceSupport = owner.hasBackspaceSupport || charCode === 8;
177-
if (!owner.hasBackspaceSupport
178-
&& Util.isAndroidBackspaceKeydown(owner.lastInputValue, currentValue)
179-
) {
180-
charCode = 8;
181-
}
179+
Util = Cleave.Util;
182180

183-
owner.lastInputValue = currentValue;
181+
owner.isBackward = owner.isBackward || event.inputType === "deleteContentBackward";
184182

185-
// hit backspace when last character is delimiter
186-
var postDelimiter = Util.getPostDelimiter(currentValue, pps.delimiter, pps.delimiters);
187-
if (charCode === 8 && postDelimiter) {
183+
var postDelimiter = Util.getPostDelimiter(owner.lastInputValue, pps.delimiter, pps.delimiters);
184+
185+
if (owner.isBackward && postDelimiter) {
188186
pps.postDelimiterBackspace = postDelimiter;
189187
} else {
190188
pps.postDelimiterBackspace = false;
191189
}
192-
},
193190

194-
onChange: function () {
195191
this.onInput(this.element.value);
196192
},
197193

198194
onFocus: function () {
199195
var owner = this,
200196
pps = owner.properties;
197+
owner.lastInputValue = owner.element.value;
201198

202199
if (pps.prefix && pps.noImmediatePrefix && !owner.element.value) {
203200
this.onInput(pps.prefix);

0 commit comments

Comments
 (0)
Please sign in to comment.