2010-08-05 21 views
23

jQuery validate eklentisini kullanıyorum ve başarı konusunda rastgele bir değer vermek istiyorum.Bir diziden rasgele bir değeri nasıl döndürebilirim?

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

Sonra çıkışa kullandığım değerini gereken yere:

Şu anda kullanmaya çalışıyorum Bu rastgele bir değer seçer

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

ancak her biri için aynı değeri kullanır Her alan için farklı bir tane seçmek yerine başarı mesajı.

+0

@Brandon - Sorulduğunda soruyu büyük ölçüde değiştirmekten kaçınmalısınız. Cevaplar artık soruları artık cevaplarla eşleşmediğinden, bunu daha sonra bulan herkes için çok daha az mantıklı olacaktır. –

+0

Haklısın, onu düzenledikten sonra düşündüm. Düzenlediğim zamanda cevapları yoktu. – BandonRandon

+0

Bunun jQuery doğrulaması ile ilgisi yoktur. –

cevap

73

Sen messages dizi depolamak ve bu gibi gitmek gibi göstermek için iletiyi hesaplayabilirsiniz:

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

Give it a try here, o zaman sadece senin .text() çağrısında getMessage diyoruz, böyle:

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

Bu neredeyse çalışır ancak her alan öğesi için aynı iletiyi döndürür. – BandonRandon

+0

@BandonRandon - Sadece bir anı olduğun izlenimi altındaydım, sadece bir dakika :) –

+0

@BandonRandon - Öğe başına rasgele güncellendiğim için, bir adım daha ileri gitmek ve kullanılmış mesajı kaldırmak isteyebilirsiniz. bu yüzden tekrarlanamaz. –

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

Diziye Yöntem ekleyebiliriz.

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

messages.getRandomVal(); 
İlgili konular