Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Validation Telephon Number

    Ciao ragazzi,

    ho bisogno del vostro aiuto. Nel mio formettino ho una serie di campi che vengono validati dalla function:

    function validateFields() {

    .
    .
    .
    .
    .



    var strcell=document.regform.cell.value;
    if (((strcell.length < 1) || (strcell.length > 50)) || !verifyNumeric(strcell) || document.regform.cell.value ==0 || document.regform.cell.value ==0) {
    strErrorMsg+='* Phone Number\n';
    }

    Il mio problema è che voglio cambiare l'attuale controllo sul telefono per com'è ora e farlo più accurato per fare in modo che ci siano solo numeri internzaionali che iniziano con lo 0 e che abbiano lunghezza minima di 10 caratteri. In rete ho trovato questo controllo:

    {
    if ( document.regform.cell.value == "" )
    {
    alert ( "Sorry, the phone field is blank." );
    document.regform.cell.focus();return false;
    }
    {
    var re10digit= ^((\(44\))( )?|(\(\+44\))( )?|(\+44)( )?|(44)( )?)?((0)|(\(0\)))?( )?(((1[0-9]{3})|(7[1-9]{1}[0-9]{2})|(20)( )?[7-8]{1})( )?([0-9]{3}[ -]?[0-9]{3})|(2[0-9]{2}( )?[0-9]{3}[ -]?[0-9]{4}))$;
    if (document.regform.cell.value.search(re10digit)==-1) {
    alert("Please make sure your phone number is the correct format '#*$!-xxx-xxxx'");
    document.regform.cell.focus();
    return false
    } }

    }


    ma non so come implementarlo....mi aiutate per favore oppure se avete qualche esempio già valido da passarmi mi aiutate a risolvere questo mio problema?

    Grazie Mille

  2. #2
    Dipende dai formati ammessi per il numero di telefono.
    Tu dici che vuoi che inizi con uno zero e abbia almeno 10 caratteri, ma la realtà è che gli utenti potrebbero immettere una gran quantità di formati validi, alcuni esempi banali:

    +0039555555
    0039555555
    0039 555555
    555.55.5
    0039-555555
    0039 55.55.55
    0039 55-55-55
    eccetera...

    siccome poi nulla impedisce anche l'uso di slash 0039/555-55.55
    si finisce con espressioni regolari via via più complesse che alla fine sfuggono allo scopo di prendere davvero in esame tutti i formati possibili.

    Al tempo stesso, se tu imponi un formato al cliente, hai un trade-off: il cliente medio potrebbe anche essere un po' "tardo" (non per colpa sua ma perchè magari usa poco internet).

    le soluzioni sono a mio avviso 2:
    1) imponi un formato: in tal caso dicci quale è, nei dettagli (spazi bianchi si no? a tal punto io suggerirei solo numeri, e se vuoi che comincino con il prefisso internazionale facci sapere, ma non è detto che tutti gli utenti conoscano il prefisso internazionale del loro paese eh...)
    2) non imponi un formato e ci si limita a vedere che siano numeri spazi bianchi e trattini o punti

    Se la richiesta è proprio quella che dici "iniziano con lo 0 e che abbiano lunghezza minima di 10 caratteri", una possibile soluzione semplice semplice è:

    <script>
    function foo(v){
    var foo=/^0[\d]{9,}$/.test(v);
    if(!foo){alert("Formato telefono non valido: deve iniziare con il prefisso internazionale e includere solo numeri (almeno 10)");}
    return foo;
    }
    </script>
    <form onsubmit="return foo(document.getElementById('telefono').value);">
    <input type="text" id="telefono" onblur="foo(this.value)" />
    </form>

    il controllo si effettua quando l'utente clicca fuori del campo (e se il formato non è quello atteso inibisce il submit della form, anche se nell' esempio il tag form non è completo di method e action e il pulsante submit non è presente)

  3. #3
    prima di tutto grazie per la risposta...sei stato gentilissimo. La mia esigenza è quella di avere dei numeri di telefono del fomrato UK quaindi la soluzione ottimale sarebbe:

    se l'uente sceglie nation=uk fai partire il controllo sul telefono e fai in modo che sia di 10 caratteri e che inizi con lo 0 altrimenti campo libero com'è ora.

    Ho provato ad usare il tuo script lato controllo javascript....ho fatto così:

    Ti premetto che nel mio form validation faccio i controlli nel seguente modo:

    function validateFields() {

    var strErrorMsg='';

    var strid_title=document.regform.id_title.value;
    if (document.regform.id_title.value == "") {
    strErrorMsg+=' * Title \n';
    }


    var strcell=document.regform.cell.value;
    var foo=
    if(document.regform.cell.value <> foo){strErrorMsg+='* Phone Number\n';}
    return foo;

    /^0[\d]{9,}$/.test(v);

    ma non mi funziona...dove sbaglio?

    In rete ho trovato questo controllo specifico per la formattazione telefonica UK:
    ^((\(44\))( )?|(\(\+44\))( )?|(\+44)( )?|(44)( )?)?((0)|(\(0\)))?( )?(((1[0-9]{3})|(7[1-9]{1}[0-9]{2})|(20)( )?[7-8]{1})( )?([0-9]{3}[ -]?[0-9]{3})|(2[0-9]{2}( )?[0-9]{3}[ -]?[0-9]{4}))$;

    come potrei adoperarla usando il tuo scrippettino?

    Grazie Ancora







    Grazie Ancora

  4. #4
    Mah, se vuoi usare proprio quella espressione regolare basta metterla dentro
    function foo(v){
    var foo=/^((\(44\))( )?|(\(\+44\))( )?|(\+44)( )?|(44)( )?)?((0)|(\(0\)))?( )?(((1[0-9]{3})|(7[1-9]{1}[0-9]{2})|(20)( )?[7-8]{1})( )?([0-9]{3}[ -]?[0-9]{3})|(2[0-9]{2}( )?[0-9]{3}[ -]?[0-9]{4}))$/.test(v);
    if(!foo){alert("Formato telefono non valido: deve iniziare con il prefisso internazionale e includere solo numeri (almeno 10)");}
    return foo;
    }

    premetto che non mi son messo a verificare se tale espressione regolare funziona o meno - tu mi dici di sì e io ti credo.
    Poi nel campo che vuoi controllare metti
    onblur="foo(this.value)"

    Non so, prova. Quanto al menu a discesa da cui seleziona UK e ci si penserà in un secondo momento se hai anche un elenco di nazioni.

    Se invece vuoi chiamare foo da dentro la funzione che hai già, mi pare di capire il campo sia document.regform.cell.value per cui:

    foo(document.regform.cell.value);

    vedi un po' te, si presume un pochino sai gestire un rimaneggiamento di un codice che consiste nell' aggiungere una funzione allo script, chiamarla da dentro una altra funzione, e levare i controlli su document.regform.cell.value effettuati prima.

  5. #5
    a dire il vero io non ci capisco nulla...sono un grafico è solo che il programmatore, mio collega, ha avuto un lutto...abbiamo una urgenza e devo risolverla...per questo motivo ho capito cosa mi vuoi dire tu ma non avrei idea di come scriverlo...finchè si tratta di modificare un valore ci arrivo ma una function...no...mi spiace....com'è che dovrei scriverla?

    Grazie per la pazienza ed il supporto!

  6. #6
    se vuoi usare validateFields allora il tuo html deve invocarla da qualche parte (dopo che la form è stata tutta caricata in memoria).

    Non è per cattiveria guarda ma senza un pochino di presupposti diventa tutto difficilissimo, anche le cose semplici. Ci vorrebbe anche il codice html, per capire dove e come invochi quella funzione.

    Il rischio è, che siccome non sei tu ad occupartene, risolviamo un problema solo per trovarne poi dieci altri (ad esempio, i campi form hanno tutti i nomi attesi? al submit della form che accade - non viene invocata validateFields al submit della form perchè non ha dei return true).

    Io ora devo andare ma se vuoi prova a postare anche un pochino di html e qualcuno qui c'è sempre.

    ps o male che vada sennò dai un colpo di telefono al tuo collega domani o dopodomani, col dovuto tatto. Lo dico perchè temo (ma potrei sbagliarmi oh!) che sia uno di quei post da cui non si esce fuori più o che magari produce quattro paginate per invocare una funzioncina ecco. ciao auguri

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.