2010-08-15 11 views
9

Tengo un formulario que tiene el campo "¿Es usted la dirección de facturación igual que su dirección de envío?". Si el usuario hace clic en el botón de opción "No", se muestra el oculto ul # billingAddress. Los campos contenidos en ul # billingAddress son necesarios si están visibles, es decir, si el ul tiene display: block.jQuery validate plug in - validación de elementos ocultos solo cuando está visible

¿Cómo escribo un addMethod personalizado para jquery validate.js que requiere esos solo si el campo es visible? Esto es lo que tengo que no está funcionando.

$.validator.addMethod ("BillingSameAsShipping", function(value, element) { 
    var billingFields = ['billingAddress1','billingAddress2','billingCity','billingState','bilingZip'] 
    if ($("#billingAddress").is('visible') && billingFields.val('') { 
     return false; 
    } else 
     return true; 
}, "Please fill in the required billing information"); 

Esto, obviamente está enchufado. Necesito hacer que funcione para cada uno que está en la var.

Gracias!

+0

¿Has probado hacerlos no solo invisibles, sino también desactivarlos? Es solo una suposición, pero dado que los campos de formularios desactivados no se transmitirán de todos modos, esperaría que no se produzca ninguna validación en ellos. – Tomalak

+0

No debería tener que desactivarlos, solo quiero que solo validen cuando sean visibles. ¿A menos que sea más fácil desactivarlos? –

+0

Me refiero a hacerlos invisibles * y * inhabilitados. Con jQuery, esto es bastante fácil. – Tomalak

Respuesta

19

El problema con el cheque visible es esta parte: .is('visible') tiene que ser: para usar el :visible selector.


Como alternativa, se puede utilizar el ignore option a hacer lo que quiera un poco más fácil, así:

$("#myForm").validate({ 
    //other options 
    ignore: ':hidden' 
}); 

Este enfoque le permite utilizar el estándar de reglas es necesario si desea.

+0

Increíble como siempre Nick. ¡Thx hombre! –

Cuestiones relacionadas