2009-10-22 10 views
2

J'essaie d'empêcher le plugin jQuery Validation de valider si une certaine option de formulaire (téléphone uniquement) est sélectionnée en utilisant $ ("# form_id"). Rules ("remove", "required") fonctionnalité, mais ça ne fonctionne pas ...Suppression de la validation jQuery à la volée

Tout ce que j'obtiens est une erreur javascript lorsque je sélectionne uniquement le téléphone: "TypeError: Le résultat de l'expression 'F' [indéfini] n'est pas un objet, et le formulaire ne sera pas envoyé car il est de valider encore les champs obligatoires.

//field validation 
$('#location').change(function(){ 
    location_val = $('#location').val(); 

    if (location_val == "select") { 
     $('.hide').hide(); 
    } 
    else if (location_val == "my_location") { 
     $('.hide').hide(); 
     $('#f_address, #f_address2, #f_city, #f_state_zip, #f_phone').customFadeIn('fast'); 
     $("#step2").rules("add", "required"); 
    } 
    else if (location_val == "customers_location") { 
     $('.hide').hide(); 
     $('#f_area, #f_phone, #f_city, #f_state_zip').customFadeIn('fast'); 
     $("#step2").rules("add", "required"); 
    } 
    else if (location_val == "both") { 
     $('.hide').hide(); 
     $('#f_area, #f_address, #f_address2, #f_city, #f_state_zip, #f_phone').customFadeIn('fast'); 
     $("#step2").rules("add", "required"); 
    } 
    else if (location_val == "phone") { 
     $('.hide').hide(); 
     $('#f_phone').customFadeIn('fast'); 
     $("#step2").rules("remove", "required"); 

    } 
}); 

$("#step2").validate({ 
    rules: { 
     city: {required: true}, 
     state: {required: true}, 
     zip: {required: true} 
    } 
}); 

Insights apprécié.

Répondre

4

la façon dont j'accompli cette tâche est d'utiliser une classe CSS qui est différent de l'ensemble de règles de validation. Ainsi, pour les champs qui sont normalement « nécessaire » Je génère les éléments avec une classe CSS 'requirement', puis j'ajoute ceci dans la page:

Puis

puis accrochez un peu de comportement sur votre élément de formulaire de déclenchement (qui ressemble à un bouton radio dans votre cas) que lorsqu'il est sélectionné, appelez addRequired(). Et quand il n'est plus sélectionné, appelez le removeRequired(). Et bien sûr, comptez les différentes options de validation sur le back-end.

+0

Je suppose que $ (this) .rules ("remove") enlèvera toutes les règles, pas seulement celles requises? – user1016945

Questions connexes