Mal rayo parta, por fin lo saque. El problema era una bobería. El primer valor, lo tenía declarado como
''=>'[Selecciona uno]' y debía tener un valor en la llave, como por ejemplo
0=>'[Selecciona uno]'. Lo descubrí porque vi que si seleccionaba un valor entonces se ejecutaba el isValid. Como empty toma el valor del 0 como vacio se ejecutó correctamente.
GatorV muchas gracias por la idea, de verdad que me ayudaste mucho, y masterpuppet también te agradezco por la ayuda