Skip to content

Commit d85d690

Browse files
authored
Fix #71: Android expiry formatting (#124)
1 parent 23178c5 commit d85d690

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

Diff for: dist/payment.js

+20-9
Original file line numberDiff line numberDiff line change
@@ -284,14 +284,19 @@ reFormatCardNumber = function(e) {
284284
formatCardNumber = function(maxLength) {
285285
return function(e) {
286286
var card, digit, i, j, len, length, re, target, upperLength, upperLengths, value;
287-
digit = String.fromCharCode(e.which);
287+
if (e.which > 0) {
288+
digit = String.fromCharCode(e.which);
289+
value = QJ.val(e.target) + digit;
290+
} else {
291+
digit = e.data;
292+
value = QJ.val(e.target);
293+
}
288294
if (!/^\d+$/.test(digit)) {
289295
return;
290296
}
291297
target = e.target;
292-
value = QJ.val(target);
293-
card = cardFromNumber(value + digit);
294-
length = (value.replace(/\D/g, '') + digit).length;
298+
card = cardFromNumber(value);
299+
length = (value.replace(/\D/g, '')).length;
295300
upperLengths = [16];
296301
if (card) {
297302
upperLengths = card.length;
@@ -318,6 +323,7 @@ formatCardNumber = function(maxLength) {
318323
} else {
319324
re = /(?:^|\s)(\d{4})$/;
320325
}
326+
value = value.substring(0, value.length - 1);
321327
if (re.test(value)) {
322328
e.preventDefault();
323329
QJ.val(target, value + ' ' + digit);
@@ -352,12 +358,17 @@ formatBackCardNumber = function(e) {
352358

353359
formatExpiry = function(e) {
354360
var digit, target, val;
355-
digit = String.fromCharCode(e.which);
361+
target = e.target;
362+
if (e.which > 0) {
363+
digit = String.fromCharCode(e.which);
364+
val = QJ.val(target) + digit;
365+
} else {
366+
digit = e.data;
367+
val = QJ.val(target);
368+
}
356369
if (!/^\d+$/.test(digit)) {
357370
return;
358371
}
359-
target = e.target;
360-
val = QJ.val(target) + digit;
361372
if (/^\d$/.test(val) && (val !== '0' && val !== '1')) {
362373
e.preventDefault();
363374
QJ.val(target, "0" + val + " / ");
@@ -722,7 +733,7 @@ Payment = (function() {
722733
QJ.on(el, 'keydown', formatBackCardNumber);
723734
QJ.on(el, 'keyup blur', setCardType);
724735
QJ.on(el, 'paste', reFormatCardNumber);
725-
QJ.on(el, 'input', reFormatCardNumber);
736+
QJ.on(el, 'input', formatCardNumber(maxLength));
726737
return el;
727738
};
728739

@@ -1061,4 +1072,4 @@ if (typeof self !== 'undefined') {
10611072

10621073

10631074
/***/ })
1064-
/******/ ]);
1075+
/******/ ]);

0 commit comments

Comments
 (0)