If the events you showed didn't work, this means one thing : the event "on text change" isn't triggered by adding text into the textbox.
Let's take a step back here. Text box are native html form elements and thus dispatch specific events to the system. onTextChanged is triggered when the focus is moved from the box.
So there is another solution : what if you didn't use the native textbox, but instead a 9patch (for the background of the box) and a text element. On click on the "falseBox", you would set it "active", meaning a cursor would start to blink in the text element (every 0.5s, add or remove a | from the text). If the box is active, you would also check for keyboard inputs, compare them to a list of authorized characters, check if the box isn't already full (max length), and finaly add the character if everything is good.
The last trick I have here can help limit the number of character but not the authorized list : at the start of the layout, you could execute some JS to add an html attribute "maxlength" to the text box. This will natively prevent user from inputing more than X character