What is your FM version?
Use script trigger attached to field OnObjectValidate. Script might be:
If [ Length ( table::Zip ) ≠ 5 ]
Show Custom Dialog [ "Fix it" ]
This returns the User to the field immediately upon exit. However, still keep field-level valiation on the field if the value is critical. The script trigger will fire before field-level validation and is more user-friendly AND it doesn't wait until record commit.
Thank you very much