Instead of a default save button, have it call a microflow in which you conditionally execute your code (e.g. call your onchange flow) en when ok, commit changes and maybe close the page. The ObjectHandling Module has a “member has changed” java action with which you can check if the attribute was changed.
I think clicking a button should count as leave/change event for the text input field, but alas, it doesn’t. It’s not something you did wrong in the modeler.
OnChange triggers after leaving a changed field.
In Mendix 9, you can change the default behaviour by setting the option While user is entering data. Read more here: https://docs.mendix.com/refguide/text-box