Validate field and field changed will fire before pageinit, particularly when you have other scripts setting fields on pageinit before yours, or when you are say, creating a new Sales Order from the customer record (therefore filling in the customer automatically on the new SO form, and all of the fields that are sourced from it, such as subsidiary and sales rep, etc)