2010-08-19 13 views
8

Problema voglio per convalidare un campo utilizzando un validatore personalizzato che ho creato che è essenzialmente un'espressione regolare per un numero di telefono solo se il campo ha un valore, altrimenti doesn' t deve essere convalidato perché è facoltativo.jQuery validatore plug-in: validare campo facoltativo

convalida personalizzata:

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

Regole:

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

Ho anche provato:

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

Per riferimento questo è il campo che sto cercando di riferimento:

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

Qualsiasi aiuto è apprezzato perché sono semplicemente perso. = \

risposta

13

È possibile chiamare .optional() (definita all'interno del plugin di convalida) come questo

$.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.'); 

Questo è lo schema standard per il plugin di convalida, take a look at their additional methods here per gli esempi.

+0

Bene santo schifo che ha funzionato! Grazie per questo. Scoprirò i metodi aggiuntivi che hai menzionato. – creativetim

+0

@creativetim - Benvenuti :) e benvenuti a SO !, assicuratevi di accettare le risposte che risolvono le vostre domande tramite il segno di spunta a sinistra della risposta che aiuta :) –

+0

Lo fa! Fatto e fatto. – creativetim

Problemi correlati