2010-08-05 4 views
23

Я использую плагин проверки правильности jQuery и хотел бы вернуть случайное значение для успеха.Как вернуть случайное значение из массива?

Сейчас я пытаюсь использовать:

 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 - Вы должны воздержаться от решительного изменения вопроса после его запроса. Ответы теперь будут гораздо менее полезными для тех, кто найдет это позже, так как вопрос больше не соответствует ответам. –

+0

Ты прав, я подумал об этом после того, как отредактировал его. В то время, когда я его редактировал, у него не было ответов. – BandonRandon

+0

Это не имеет никакого отношения к проверке jQuery. –

ответ

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

+0

@BandonRandon - у меня создалось впечатление, что у вас было всего одно мгновение :) –

+0

@BandonRandon - Обновленный, чтобы быть случайным для каждого элемента, я бы предположил, что вам может понадобиться сделать еще один шаг и удалить также использованное сообщение , поэтому его нельзя повторить. –

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(); 
Смежные вопросы