The problem is that the js being used to process the input is using String.fromCharCode() incorrectly.
The key presses are intercepted as keyup and keydown events which return a keycode which doesn’t map to a charcode. You cannot pass a keycode to fromCharCode() and expect it to work properly.
For example the numpad 5 gets turned into the string “e” with the above function. A decimal point -> “n”.
As a further example of this being incorrect, the key “e” is actually turned into the string “E” by this function.
The validation logic probably needs to be changed to hook into the keypress event, although some extra logic may be required to cancel the event.
@daniel.cannon this is in AmountSelector.js btw.