Skip to content

Commit c1ed946

Browse files
committed
fix(formatCardNumber): fix issue where duplicate digits were added to
number
1 parent 9659db9 commit c1ed946

File tree

3 files changed

+5
-38
lines changed

3 files changed

+5
-38
lines changed

dist/payment.js

+2-10
Original file line numberDiff line numberDiff line change
@@ -226,14 +226,10 @@ var payment =
226226
}
227227
for (i = j = 0, len = upperLengths.length; j < len; i = ++j) {
228228
upperLength = upperLengths[i];
229-
if (length > upperLength && upperLengths[i + 1]) {
229+
if (length >= upperLength && upperLengths[i + 1]) {
230230
continue;
231231
}
232-
if (length > upperLength) {
233-
return;
234-
}
235-
if (length === upperLength) {
236-
QJ.val(target, value + digit);
232+
if (length >= upperLength) {
237233
return;
238234
}
239235
}
@@ -249,10 +245,6 @@ var payment =
249245
e.preventDefault();
250246
QJ.val(target, value + ' ' + digit);
251247
return QJ.trigger(target, 'change');
252-
} else if (re.test(value + digit)) {
253-
e.preventDefault();
254-
QJ.val(target, value + digit + ' ');
255-
return QJ.trigger(target, 'change');
256248
}
257249
};
258250

spec/index.spec.coffee

+1-17
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ describe 'payment', ->
307307
ev = document.createEvent "HTMLEvents"
308308
ev.initEvent "keypress", true, true
309309
ev.eventName = "keypress"
310-
ev.which = 52
310+
ev.which = "4".charCodeAt(0)
311311

312312
number.dispatchEvent(ev)
313313

@@ -412,22 +412,6 @@ describe 'payment', ->
412412
number.dispatchEvent(ev)
413413

414414
assert.equal QJ.val(number), '4111 1111 1111 1111 1'
415-
it 'should format cc number correctly when a lesser length limit is reached', ->
416-
number = document.createElement('input')
417-
number.type = 'text'
418-
QJ.val(number, '4111 1111 1111 111')
419-
420-
Payment.formatCardNumber(number)
421-
422-
ev = document.createEvent "HTMLEvents"
423-
ev.initEvent "keypress", true, true
424-
ev.eventName = "keypress"
425-
ev.which = "1".charCodeAt(0)
426-
427-
number.dispatchEvent(ev)
428-
429-
assert.equal QJ.val(number), '4111 1111 1111 1111'
430-
431415
describe 'formatCardExpiry', ->
432416
it 'should add a slash after two numbers', ->
433417
expiry = document.createElement('input')

src/index.coffee

+2-11
Original file line numberDiff line numberDiff line change
@@ -162,11 +162,8 @@ formatCardNumber = (e) ->
162162

163163
# Return if an upper length has been reached
164164
for upperLength, i in upperLengths
165-
continue if length > upperLength and upperLengths[i+1]
166-
return if length > upperLength
167-
if length == upperLength
168-
QJ.val(target, value + digit)
169-
return
165+
continue if length >= upperLength and upperLengths[i+1]
166+
return if length >= upperLength
170167

171168
# Return if focus isn't at the end of the text
172169
return if hasTextSelected(target)
@@ -183,12 +180,6 @@ formatCardNumber = (e) ->
183180
QJ.val(target, value + ' ' + digit)
184181
QJ.trigger(target, 'change')
185182

186-
# If '424' + 2
187-
else if re.test(value + digit)
188-
e.preventDefault()
189-
QJ.val(target, value + digit + ' ')
190-
QJ.trigger(target, 'change')
191-
192183
formatBackCardNumber = (e) ->
193184
target = e.target
194185
value = QJ.val(target)

0 commit comments

Comments
 (0)