2010-10-20 14 views
18

Huy Guys,Jquery validar dependen campo

Estoy tratando de usar jQuery plugin de validación y especificar que un campo es obligatorio sólo cuando otros 3 campos están en blanco (vacío).

Lo que pasa es que la regla funciona, pero sigue siendo necesaria en el campo incluso cuando escribo valor en ella.

Gracias.

Este es mi código:

$("#ProspectDtlFrm").validate({ 
rules: { 

    prsptEmail: { 
    required: function(element) { return ($("#prsptHomePhone").val() == '' && $("#prsptBusinessPhone").val() == '' && $("#prsptMobilePhone").val() =='') }           
    }  
}, 
messages: { 
     prsptEmail: "Please enter your first name" 
} 
}); 

Respuesta

35

Usted podría utilizar depends:

$('#ProspectDtlFrm').validate({ 
    rules: { 
     prsptEmail: { 
      required: { 
       depends: function(element) { 
        return ($('#prsptHomePhone').val() == '' && 
          $('#prsptBusinessPhone').val() == '' && 
          $('#prsptMobilePhone').val() == ''); 
       } 
      } 
     }  
    }, 
    messages: { 
     prsptEmail: 'Please enter your first name' 
    } 
}); 
+0

Hola, Sigue haciendo lo mismo. cuando ingreso valores en el campo, sigue requiriendo. – cesar

+0

Déjame darte más detalles sobre lo que estoy tratando de hacer. Tengo 4 campos donde el usuario debe ingresar valores en al menos uno de ellos. Por lo tanto, estoy tratando de validar que cada uno de estos 4 campos será obligatorio cuando todos estén vacíos, de lo contrario no será necesario. – cesar

+0

Hola, Darin, funciona cuando escribo algo en prsptHomePhone, prsptBusinessPhone o prsptMobilePhone, pero cuando escribo algo en el campo Correo electrónico, todavía es obligatorio. – cesar

5

'depende' parece que no está soportado más, y, sus documentos no están al día.

Así, en el escenario en el que si un cuadro de 'sí' garrapata está marcada, validar otro campo:

rules:{ 
    'name value of area you want to validate':{ 
     required: '#tickBoxId:checked' 
    } 
} 
7

La cláusula depends todavía es compatible. Esto es desde la versión 1.11.0pre:

normalizeRules: function(rules, element) { 
    // handle dependency check 
    $.each(rules, function(prop, val) { 
    // ignore rule when param is explicitly false, eg. required:false 
    if (val === false) { 
     delete rules[prop]; 
     return; 
    } 
    if (val.param || val.depends) { 
     var keepRule = true; 
     switch (typeof val.depends) { 
     case "string": 
      keepRule = !!$(val.depends, element.form).length; 
      break; 
     case "function": 
      keepRule = val.depends.call(element, element); 
      break; 
     } 
     if (keepRule) { 
     rules[prop] = val.param !== undefined ? val.param : true; 
     } else { 
     delete rules[prop]; 
     } 
    } 
    }); 

Como puede ver, puede elegir entre "cadena" y "función". Así que usted puede utilizar:

rules: { 
    input_name_here: { 
    required: { 
     depends: function(element) { 
     return $("#thickBoxId:checked").length; 
     //or whatever you need to check 
     } 
    } 
    } 
} 

O

rules:{ 
    input_name_here:{ 
    required: '#tickBoxId:checked' 
    } 
} 

Si sólo necesita para la prueba de la existencia de algo comprobado.

+0

lo siento mi edición fue mala –

1

la manera es depends es trabajos.

rules: { 
     prsptEmail: { 
      required: { 
       depends: function(element){ 
        if ($('#id-user').val() == '') { 
         return true; 
        } else { 
         return false; 
        } 
       } 
      } 
     }, 
    }, 
    messages: { 
     prsptEmail : { 
      required : "please signIn!", 
     } 
    }, 
Cuestiones relacionadas