Validation jQuery de plusieurs entrées différentes

J’ai réussi à configurer le plug-in de validation jQuery sur mon formulaire et j’ai donné des règles pour deux champs dans lesquels leurs valeurs ne doivent pas correspondre. Plus précisément, les entrées email et email_2 ne peuvent plus être les mêmes, et cela fonctionne. Mais mon vrai besoin est de valider plusieurs entrées de la même manière (dans ce cas, 4 d’entre elles). J’ai un email, email_2, email_3, email_4 et aucun d’entre eux ne devrait être égal. Vous pouvez le voir dans mon jsfiddle ici , et si vous avez une solution, vous pouvez le mettre à jour et le remettre en réponse:

html:





jquery:

 $.validator.addMethod("notequal", function(value, element) { return $('#email').val() != $('#email_2').val()}, "* You've entered this one already"); // validate form $("#signupform").validate({ rules: { email: { required: true, notequal: true }, email_2: { required: true, notequal: true }, }, }); 

Quelle est la meilleure solution pour valider toutes les entrées?

    Oui, cela fonctionne toujours avec 1.10.1

    DEMO

    source: http://www.anujgakhar.com/2010/05/24/jquery-validator-plugin-and-notequalto-rule-with-multiple-fields/

    HTML

     

    jQuery

     jQuery.validator.addMethod("notEqualToGroup", function (value, element, options) { // get all the elements passed here with the same class var elems = $(element).parents('form').find(options[0]); // the value of the current element var valueToCompare = value; // count var matchesFound = 0; // loop each element and compare its value with the current value // and increase the count every time we find one jQuery.each(elems, function () { thisVal = $(this).val(); if (thisVal == valueToCompare) { matchesFound++; } }); // count should be either 0 or 1 max if (this.optional(element) || matchesFound <= 1) { //elems.removeClass('error'); return true; } else { //elems.addClass('error'); } }, jQuery.format("Please enter a Unique Value.")) // validate form $("#signupform").validate({ rules: { email: { required: true, notEqualToGroup: ['.distinctemails'] }, email_2: { required: true, notEqualToGroup: ['.distinctemails'] }, email_3: { required: true, notEqualToGroup: ['.distinctemails'] }, email_4: { required: true, notEqualToGroup: ['.distinctemails'] }, }, }); 

    Vous pouvez utiliser $ .unique ():

     uniqArray = $.unique(emailsArray); if (uniqArray.length != emailsArray.length) {  } 
     uniqArray = emailsArray.slice(); $.unique(uniqArray); if (uniqArray.length != emailsArray.length) {  }