     value   = $target.val()
     value   = value.replace(/\D/g, '')[0...4]
     cursor  = $target.prop('selectionStart')
-    if (cursor != null && e.type != 'change')
+    eventBlacklist = ['change', 'input']
+
+    if cursor != null && eventBlacklist.indexOf(e.type) == -1
       $target.prop('selectionStart', cursor)
     else
       $target.val(value)

    value   = $target.val()
    value   = $.payment.formatExpiry(value)
    cursor  = $target.prop('selectionStart')
    if cursor != null && e.type != 'change'
      $target.prop('selectionStart', cursor)
    else
      $target.val(value)

    value   = $target.val()
    value   = $.payment.formatCardNumber(value)
    cursor  = $target.prop('selectionStart')
    eventBlacklist = ['change', 'input']

    if cursor != null && eventBlacklist.indexOf(e.type) == -1
      $target.prop('selectionStart', cursor)
    else
      $target.val(value)
