2010-08-05 50 views
23

我正在使用jQuery validate插件,并希望成功返回一个随机值。如何从数组中返回一个随机值?

现在,我尝试使用:

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

然后,我需要输出,可以使用值:

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

这将选择一个随机值,但使用相同的值每成功消息,而不是为每个字段选择不同的消息。

+0

@Brandon - 一旦出现问题,您应该避免彻底改变问题。现在的答案对于任何后来发现这个问题的人来说都没有多大意义,因为问题不再符合答案。 – 2010-08-05 23:41:39

+0

你是对的我在编辑它之后想到了这一点。当我编辑它时,它没有答案。 – BandonRandon 2010-08-06 00:05:58

+0

这与jQuery验证无关。 – 2011-12-08 12:40:31

回答

73

可以存储messages阵列,并计算该消息显示,当您去,就像这样:

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

Give it a try here,然后就打电话getMessage.text()通话,就像这样:

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

这几乎可以工作,但会为每个字段元素返回相同的消息。 – BandonRandon 2010-08-05 23:45:19

+0

@BandonRandon - 我的印象是你只有一个,只是一会儿:) – 2010-08-05 23:47:16

+0

@BandonRandon - 已更新为每个元素的随机数,我建议您可能想要更进一步并删除使用的消息以及,所以不能重复。 – 2010-08-05 23:49:17

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

我们可以将方法添加到数组。

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

messages.getRandomVal(); 
相关问题