@@ -284,14 +284,19 @@ reFormatCardNumber = function(e) {
284
284
formatCardNumber = function ( maxLength ) {
285
285
return function ( e ) {
286
286
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
+ }
288
294
if ( ! / ^ \d + $ / . test ( digit ) ) {
289
295
return ;
290
296
}
291
297
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 ;
295
300
upperLengths = [ 16 ] ;
296
301
if ( card ) {
297
302
upperLengths = card . length ;
@@ -318,6 +323,7 @@ formatCardNumber = function(maxLength) {
318
323
} else {
319
324
re = / (?: ^ | \s ) ( \d { 4 } ) $ / ;
320
325
}
326
+ value = value . substring ( 0 , value . length - 1 ) ;
321
327
if ( re . test ( value ) ) {
322
328
e . preventDefault ( ) ;
323
329
QJ . val ( target , value + ' ' + digit ) ;
@@ -352,12 +358,17 @@ formatBackCardNumber = function(e) {
352
358
353
359
formatExpiry = function ( e ) {
354
360
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
+ }
356
369
if ( ! / ^ \d + $ / . test ( digit ) ) {
357
370
return ;
358
371
}
359
- target = e . target ;
360
- val = QJ . val ( target ) + digit ;
361
372
if ( / ^ \d $ / . test ( val ) && ( val !== '0' && val !== '1' ) ) {
362
373
e . preventDefault ( ) ;
363
374
QJ . val ( target , "0" + val + " / " ) ;
@@ -722,7 +733,7 @@ Payment = (function() {
722
733
QJ . on ( el , 'keydown' , formatBackCardNumber ) ;
723
734
QJ . on ( el , 'keyup blur' , setCardType ) ;
724
735
QJ . on ( el , 'paste' , reFormatCardNumber ) ;
725
- QJ . on ( el , 'input' , reFormatCardNumber ) ;
736
+ QJ . on ( el , 'input' , formatCardNumber ( maxLength ) ) ;
726
737
return el ;
727
738
} ;
728
739
@@ -1061,4 +1072,4 @@ if (typeof self !== 'undefined') {
1061
1072
1062
1073
1063
1074
/***/ } )
1064
- /******/ ] ) ;
1075
+ /******/ ] ) ;
0 commit comments