2010-08-05 13 views
23

Estoy usando el complemento de validación de jQuery y me gustaría devolver un valor aleatorio si tiene éxito.¿Cómo puedo devolver un valor aleatorio de una matriz?

En este momento estoy tratando de usar:

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

Entonces donde necesito el valor de salida que utilizo:

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

Esto selecciona un valor aleatorio pero utiliza el mismo valor para cada uno mensaje de éxito en lugar de seleccionar uno diferente para cada campo.

+0

@Brandon - Debe abstenerse de cambiar drásticamente la pregunta una vez que se ha pedido. Las respuestas ahora tendrán mucho menos sentido para cualquier persona que encuentre esto más tarde ya que la pregunta ya no coincide con las respuestas. –

+0

Tienes razón, pensé en eso después de haberlo editado. En el momento en que lo edité no tenía respuestas. – BandonRandon

+0

Esto no tiene nada que ver con la validación de jQuery. –

Respuesta

73

Puede almacenar la matriz messages y calcular el mensaje a mostrar a medida que avanza, como esto:

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

Give it a try here, a continuación, sólo llaman getMessage en su llamada .text(), así:

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

Esto casi funciona pero devuelve el mismo mensaje para cada elemento de campo. – BandonRandon

+0

@BandonRandon - Tenía la impresión de que solo tenía uno, solo un momento :) –

+0

@BandonRandon - Actualizado como elemento aleatorio por elemento, le sugiero que desee dar un paso más y eliminar también el mensaje utilizado por lo que no se puede repetir –

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

Podemos agregar Method to Array.

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

messages.getRandomVal(); 
Cuestiones relacionadas