     killEvent = (event) ->
       event.preventDefault()
       event.stopPropagation()
+
+    triggerChange = (elem) ->
+      elem.trigger("change")
 
     # helper methods for finding the new cursor position based on input type
     findNewCharacterCursorPosition = (elem, initialPosition) ->


            elem.on 'keydown', (event) ->
              keycode = event.which
              killEvent(event) unless keycode == 37 || keycode == 39

              return if invalidInput(elem, event)
              # unless isControlKey(keycode)

                  backspacePressed(elem, event) # handle logic for backspace
                  elem.val resetCommas(elem.val()) # reformat the number in place
                  elem[0].setSelectionRange(newCursorPosition, newCursorPosition) # set the new cursor position
                  triggerChange(elem)
              
              if keycode == 46 # delete is pressed
                unless elem[0].selectionStart == elem.val().length
