2014-07-07 2 views
4

J'ai des règles qui valident un groupe (nécessite l'une des trois). Cela fonctionne bien, cependant, je dois seulement avoir l'exigence 1 sur 3 dépend d'une sélection dans le formulaire.La validation de jQuery dépend du groupe et l'exige:

rules: { 
    cloudfront_7: { 
    require_from_group: { 
     depends: function(element) { 
     if ($("#classify").val() == "PIC"){ 
      return false; 
     } else { 
      return [1, ".verification-group"]; 
     } 
     } 
    } 
    }, 
    cloudfront_8: { 
    require_from_group: { 
     depends: function(element) { 
     if ($("#classify").val() == "PIC"){ 
      return false; 
     } else { 
      return [1, ".verification-group"]; 
     } 
     } 
    } 
    }, 
    cloudfront_9: { 
    require_from_group: { 
     depends: function(element) { 
     if ($("#classify").val() == "PIC"){ 
      return false; 
     } else { 
      return [1, ".verification-group"]; 
     } 
     } 
    } 
    } 
} 

Je remarqué qu'il retourne juste true au lieu du code je l'ai écrit, ce qui est nécessaire pour la fonction require_from_group().

+0

il devrait exiger lorsque PIC est sélectionné ou non? Les instructions de retour ressemblent à 'if else' si les instructions de retour sont inversées –

+0

si PIC est sélectionné, il ne devrait pas nécessiter –

+0

Essayez de supprimer le' depends' imbriqué de 'require_from_group', il devrait fonctionner comme' require_from_group: [1, ".verification-group" ], depends: function (element) {[..]} ' –

Répondre

4

je résolu le problème en utilisant ces règles personnalisées:

var verDoc_required = { 
    cloudfront_7: { 
    require_from_group: [1, ".verification-group"] 
    }, 
    cloudfront_8: { 
    require_from_group: [1, ".verification-group"] 
    }, 
    cloudfront_9: { 
    require_from_group: [1, ".verification-group"] 
    } 
} 

$("#classify").change(function() { 
    if ($(this).val() == "PIC") { 
    removeRules(verDoc_required); 
    } else { 
    addRules(verDoc_required); 
    } 
}); 

function addRules(rulesObj) { 
    for (var item in rulesObj) { 
    $('#' + item).rules('add', rulesObj[item]); 
    } 
} 
function removeRules(rulesObj) { 
    for (var item in rulesObj) { 
    $('#' + item).rules('remove'); 
    } 
} 
+1

cela semble avoir fait l'affaire! Merci! – Dan

3

vous pouvez essayer ce code:

rules: { 
cloudfront_7: { 
require_from_group: { 
param: [1, "..verification-group"], 
depends: function(element) {return .....} 
     } 
    }, 
cloudfront_8: { 
require_from_group: { 
param: [1, "..verification-group"], 
depends: function(element) {return .....} 
     } 
    }, 
cloudfront_9: { 
require_from_group: { 
param: [1, "..verification-group"], 
depends: function(element) {return .....} 
     } 
    }, 
} 
+1

Super! Je suppose que c'est la bonne réponse – Andrea

Questions connexes