Reputation: 3731
I'm using the jQuery validate plugin, and would like to return a random value on success.
Right now I'm trying to use:
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())
Then where I need to output the value I use:
$(document).ready(function(){
var validator = $(".contactform").validate({
success: function(label) {
label.addClass("valid").text(success_message[i])
}
}); //end form validate code
});
This selects a random value but uses the same value for each success message instead of selecting a different one for each field.
Upvotes: 34
Views: 53425
Reputation: 8087
A concise way of choosing a random element of the array is to use bitwise OR instead of Math.floor(). This works because bitwise operations will cause the fractional part of the number to be discarded, which achieves exactly the same result as Math.floor(). Operator precedence means that the bitwise operation happens after the multiplication. Doing bitwise OR with zero leaves the original number unaffected, except that now the fractional part is gone.
const arr = ["Good!", "Great!", "Awesome!", "Super!", "Nice!"]
const randomElement = arr[Math.random() * arr.length | 0]
console.log(randomElement)
Upvotes: 1
Reputation: 2853
We can add Method to Array.
Array.prototype.getRandomVal = function(){
return this[Math.floor(Math.random()*this.length)];
};
messages.getRandomVal();
Upvotes: 7
Reputation: 630389
You can store the messages
array and calculate the message to show as you go, like this:
var messages = ["Good!", "Great!", "Awesome!", "Super!", "Nice!"];
function getMessage() {
return messages[Math.floor(Math.random() * messages.length)];
}
Give it a try here, then just call getMessage
in your .text()
call, like this:
label.addClass("valid").text(getMessage());
Upvotes: 91
Reputation: 13427
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
});
Upvotes: 5