2010-08-05 8 views
23

J'utilise le plugin jQuery validate, et j'aimerais retourner une valeur aléatoire en cas de succès.Comment puis-je renvoyer une valeur aléatoire d'un tableau?

En ce moment je suis en train d'utiliser:

 var success_message = new Array(); 
    success_message[0] = "Good!"; 
    success_message[1] = "Ok!"; 
    success_message[2] = "Great!"; 
    success_message[3] = "Perfect!"; 
    success_message[4] = "Nice!"; 
    success_message[5] = "Awesome"; 
    var i = Math.floor(5*Math.random()) 

Alors où je dois sortir la valeur que j'utilise:

$(document).ready(function(){ 
    var validator = $(".contactform").validate({ 
     success: function(label) { 
      label.addClass("valid").text(success_message[i]) 
     } 
    }); //end form validate code 
}); 

Ceci permet de sélectionner une valeur aléatoire mais utilise la même valeur pour chaque message de réussite au lieu d'en sélectionner un différent pour chaque champ.

+0

@Brandon - Vous devriez éviter de changer radicalement la question une fois qu'elle est posée. Les réponses auront maintenant beaucoup moins de sens pour quiconque trouve cela plus tard puisque la question ne correspond plus aux réponses. –

+0

Vous avez raison, j'ai réfléchi à cela après l'avoir modifié. Au moment où je l'ai édité, il n'y avait pas de réponses. – BandonRandon

+0

Ceci n'a rien à voir avec la validation de jQuery. –

Répondre

73

Vous pouvez stocker le tableau messages et calculer le message pour montrer que vous allez, comme ceci:

var messages = ["Good!", "Great!", "Awesome!", "Super!", "Nice!"]; 
function getMessage() { 
    return messages[Math.floor(Math.random() * messages.length)]; 
} 

Give it a try here, alors il suffit d'appeler getMessage dans votre .text() appel, comme ceci:

label.addClass("valid").text(getMessage()); 
+0

Cela fonctionne presque mais renvoie le même message pour chaque élément de champ. – BandonRandon

+0

@BandonRandon - J'étais sous l'impression que vous aviez juste un, juste un instant :) –

+0

@BandonRandon - Mise à jour pour être aléatoire par élément, je suggère que vous souhaitiez aller plus loin et supprimer le message utilisé ainsi , donc il ne peut pas être répété. –

3
function sucess() { 
message = ["Good!","Awesome!","Super!","Nice!","Great!"]; 
return message[Math.floor(Math.random() * message.length)]; 
} 

$(document).ready(function(){ 
    var validator = $(".contactform").validate({ ... 
       success: function(label) { 
    label.addClass("valid").text(success()); 
} 
     }); //end form validate code 
     }); 
3

Nous pouvons ajouter Method to Array.

Array.prototype.getRandomVal = function(){ 
    return this[Math.floor(Math.random()*this.length)]; 
}; 

messages.getRandomVal(); 
Questions connexes