2010-08-05 26 views
23

Utilizzo il plugin jQuery validate e desidero restituire un valore casuale in caso di successo.Come posso restituire un valore casuale da un array?

adesso sto cercando di utilizzare:

 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()) 

Poi dove ho bisogno di uscita il valore che uso:

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

questo modo si seleziona un valore casuale ma utilizza lo stesso valore per ogni messaggio di successo invece di selezionarne uno diverso per ogni campo.

+0

@Brandon - È necessario astenersi dal cambiare drasticamente la domanda una volta che è stata chiesta. Le risposte ora avranno molto meno senso per chiunque lo trovi dopo, poiché la domanda non corrisponde più alle risposte. –

+0

Hai ragione, ci ho pensato dopo averlo modificato. Al momento in cui l'ho modificato non aveva risposte. – BandonRandon

+0

Questo non ha nulla a che fare con la convalida di jQuery. –

risposta

73

È possibile memorizzare la matrice messages e calcolare il messaggio per mostrare come si va, in questo modo:

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

Give it a try here, poi basta chiamare getMessage nel vostro .text() chiamata, in questo modo:

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

Funziona quasi ma restituisce lo stesso messaggio per ogni elemento del campo. – BandonRandon

+0

@BandonRandon - Avevo l'impressione che ne avessi solo uno, solo un momento :) –

+0

@BandonRandon - Aggiornato per essere casuale per elemento, ti suggerirei di voler fare un ulteriore passo avanti e rimuovere anche il messaggio usato , quindi non può essere ripetuto. –

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

Possiamo aggiungere il metodo all'array.

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

messages.getRandomVal(); 
Problemi correlati