limit validation button on visible state textfield?
I would personally prefer a form-validation-function, which seems for me the ideal solution...
But since you're using custom validators, you can check the value of your unit-field in there:  

The second argument in your custom element-validation-function is the form_state-object, with that you have access all form-values. (eg. $form_state['values']['unit'])
Check the value of the unit-field in both validation-functions, depending of it's state do or skip the validation.

Example:

   function price_percentage_validate($element, &amp;$form_state, $form) {
        if ($form_state['values']['unit']&gt;0) {
            /* your validation code */
        }
    }
   function price_validate($element, &amp;$form_state, $form) {
        if ($form_state['values']['unit']&lt;1) {
            /* your validation code */
        }
    }