2010-08-19 15 views
8

Problema quiero validar un campo usando un validador personalizado que he creado es esencialmente una expresión regular para un número de teléfono sólo si el campo tiene un valor, de lo contrario, doesn' Necesito ser validado porque es opcional.jQuery validador plug-in: validar campo opcional

personalizada validador:

$.validator.addMethod('phone', function (value) { 
     return /^[01]?[- .]?\(?[2-9]\d{2}\)?[- .]?\d{3}[- .]?\d{4}$/.test(value); 
    }, 'Please enter a valid US phone number.'); 

Reglas:

phone: { 
    required: true, 
    phone: true 
}, 
fax: { 
    phone: true 
} 

incluso he intentado:

phone: { 
    required: true, 
    phone: true 
}, 
fax: { 
    required: function(element){ 
    if (!$("#cf-fax").val()) { return true; } else { return false; } 
    } 
    phone: true 
} 

Como referencia esto es el campo que estoy tratando de referencia:

<input type="text" name="fax" class="optional" size="15" maxlength="14" id="cf-fax" /> 

Se agradece cualquier ayuda porque simplemente estoy perdido. = \

Respuesta

13

Puede llamar .optional() (definida dentro del plug-in de validación) como esto

$.validator.addMethod('phone', function (value, element) { 
    return this.optional(element) || /^[01]?[- .]?\(?[2-9]\d{2}\)?[- .]?\d{3}[- .]?\d{4}$/.test(value); 
}, 'Please enter a valid US phone number.'); 

Este es el esquema estándar para el plugin de validación, take a look at their additional methods here de ejemplos.

+0

¡Qué mierda sagrada que funcionó! Gracias por eso. Definitivamente voy a profundizar en los métodos adicionales que mencionaste. – creativetim

+0

@creativetim - Bienvenido :) y bienvenido a SO !, asegúrese de aceptar respuestas que resuelvan sus preguntas a través de la marca de verificación a la izquierda de la respuesta que ayuda :) –

+0

¡Sí! Hecho y hecho. – creativetim

Cuestiones relacionadas