2012-06-14 6 views
5

Come posso consentire spazi all'interno di un numero solo di convalida, con un minimo di 8 cifre? I numeri di telefono sono molto più facili da digitare quando gli spazi sono consentiti. per esempio. 0400 123 456, 9699 1234.jQuery convalida numero di telefono consente spazi, minimo 8 cifre

Ecco il mio codice finora, ho solo l'8 cifre di lavoro minima di convalida:

jQuery.validator.addMethod(
    "phone", 
    function(phone_number, element) { 
    return this.optional(element) || /^\d{8}$/.test(phone_number); 
    }, 
    "Please enter numbers only" 
); 
+0

Ciao, ha trovato questo post durante la ricerca di una risposta a una domanda simile. Non aver mai usato addMethod per creare una regola di convalida personalizzata, in cui nel flusso del documento si specifica la regola personalizzata? E allora come lo chiami dalla sezione delle regole della tua funzione di validazione? – Barbs

risposta

4

rimuovere lo spazio prima di convalidare:

return this.optional(element) || /^\d{8,}$/.test(phone_number.replace(/\s/g, '')); 

In questo modo si mantengono lo spazio

+0

Grazie funziona, ma voglio un minimo di 8 numeri, alcuni numeri di telefono avranno 10 cifre. Come posso assicurarmi che il numero di cifre sia maggiore di 8? – JV10

+0

@ JV10 basta aggiungere una virgola dopo '8' all'interno delle parentesi graffe :), modificato la mia risposta per il tuo commento –

1

Il mio suggerimento è quello di rimuovere solo gli spazi dal phone_number prima di convalidare.

jQuery.validator.addMethod(
    "phone", 
    function(phone_number, element) { 
    return this.optional(element) || /^\d{8}$/ *$/.test(phone_number.replace(/\s/g, "")); 
    }, 
    "Please enter numbers only" 
); 
+1

Preferirei mantenere gli spazi come quando il modulo è inviato, sarà più facile da leggere per il destinatario. – JV10

+0

Ho aggiornato per il tuo commento. –