2012-04-27 20 views
15

tengo el siguiente jQuery Plugin Validación:validación jQuery plugin de múltiples direcciones de correo electrónico

<script type="text/javascript" src="/requires/js/jquery.min.js"></script> 
<script type="text/javascript" src="/requires/js/jquery.validate.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#form").validate({ 
      rules: { 
       name: { 
        required: true, 
        minlength: 2 
       }, 
       email: { 
        required: true, 
        email: true 
       }, 
       emails: { 
        required: true, 
        email: true 
       } 
      }, 
      messages: { 
       name: { 
        required: "Je bent vergeten om je naam in te vullen.", 
        minlength: "Je bent vergeten om je naam in te vullen." 
       }, 
       email: { 
        required: "Je bent vergeten om je emailadres in te vullen.", 
        email: "Het opgegeven emailadres is niet geldig." 
       }, 
       emails: { 
        required: "Je bent vergeten om het emailadres van je vriend(in) in te vullen.", 
        email: "Je moet een geldig e-mailadres van je vriend(in) invullen." 
       } 
      } 
     }); 
    }); 
</script> 

<form id="form" method="post"> 
Jouw naam: <input type="text" name="name"><br /> 
Jouw e-mailadres: <input type="text" name="email"><br /> 
Het e-mailadres van je vriend(in): <input type="text" name="emails"><br /> 
<input type="submit" value="Verstuur"> 
</form> 

Por correos electrónicos de valor gente debe puede dar múltiples emailaddresses como [email protected]; [email protected] o test test @. com, test @ test2.com

Cuando hace esto, el complemento de validación da el error: Je moet een geldig e-mailadres van je vriend (in) invullen.

¿Cómo puedo resolver este problema?

Respuesta

42

Aquí es una función personalizada hecha añadido con la ayuda de la addMethod:

jQuery.validator.addMethod(
    "multiemail", 
    function(value, element) { 
     if (this.optional(element)) // return true on optional element 
      return true; 
     var emails = value.split(/[;,]+/); // split element by , and ; 
     valid = true; 
     for (var i in emails) { 
      value = emails[i]; 
      valid = valid && 
        jQuery.validator.methods.email.call(this, $.trim(value), element); 
     } 
     return valid; 
    }, 

    jQuery.validator.messages.email 
); 

Aquí hay una jsFiddle que muestra cómo utilizar el método personalizado multiemail:

http://jsfiddle.net/leniel/xFphm/7/

+0

Gracias, pero ¿dónde puedo poner esto en '$ (" # form "). Validate ({});'? – Arthur

+1

Incluir este JavaScript en su página, donde tiene emails: { required: true,email: true }, cámbielo a emails: { required: true,multiemail: true }. –

+0

¡Gracias, amigo !, pero cuando el campo de correos electrónicos está vacío, vería por ejemplo: campo vacío, y cuando el campo no es correcto, este emailadres no es válido. Ahora solo veo un error cuando el campo no es correcto ... – Arthur

0

función por encargo con mensaje dentro de

<script>  
jQuery.validator.addMethod("custom_method_one", function (value, element) { 
    if (this.optional(element)) { 
    return true; 
    } 

    var emails = value.split(','), 
    valid = true; 

    for (var i = 0, limit = emails.length; i < limit; i++) { 
    value = emails[i]; 
    valid = valid && jQuery.validator.methods.email.call(this, value, element); 
    } 

    return valid; 
    }, "Invalid email format: please use a comma to separate multiple email addresses."); 

$('#form').validate({ 
"emails": { required:true,custom_method_one: true } 
}) 
</script> 

<form method="post" id="form" name="form" action=""> 
<input type="text" name="emails" id="emails" placeholder="(eg:[email protected],[email protected],....)"/> 

</form> 
Cuestiones relacionadas