The script code in the state changes is where any work resulting from a particular state needs to be done, including validation of any entered values. Additionally, when you consider Wizard actions, it becomes apparent that you need to consider the direction of flow. For example, if you move forward to a particular step, and then move back to the previous step without entering anything, you do not want the Wizard to complain, whereas you do want it to complain if you try to move forward without entering anything. Therefore, the value of Move indicates the direction of travel. Forward = 1, Backward = -1, and you can write:
If Move;
[
IfThen(Move ==
Forward,
{ Perform Validation
}