Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: controllo su data

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461

    controllo su data

    CIao a tutti!

    devo creare un controllo in js per un campo data che è in formato gg-mm-aaaa per verificare che sia corretto e non ci siano presenti lettere...

    ho provato utilizzando:

    if (isNaN(document.getElementById("data").value)){ alert("The Departure Date type is wrong.");return false;}

    ma giustamente mi blocca il fatto che ci sia il trattino che viene preso come valore non numerico.

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    if (!document.getElementById("data").value.match(/^\d{2}-\d{2}-\d{4}$/)){ alert("The Departure Date type is wrong.");return false;}

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    perfetto!

    solo che se metto tipo 99-87-9888..non mi da l'alert

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    e ma tu volevi un controllo formale, non verificare che la data fosse esistente
    Codice PHP:
    /* per me il metodo migliore per accertarsi che la data sia plausibile, dopo aver superato un controllo formale, */
        
    var validDate=false;
        var 
    elDate=document.getElementById("data");
        if(
    elDate.value.match(/\d{2}-\d{2}-\d{4}/)){
    /* e':
    - splittare il value per trattino, hai giorno mese e anno */
            
    var arrDate=elDate.value.split('-');
    /* - creare un nuovo oggetto date con questa data */
            
    var date=new Date(arrDate[2],arrDate[1]-1,arrDate[0]);
    /* - ricavare dall' oggetto date giorno mese e anno e compararli, se corrispondono la data e' plausibile */
            
    if(date.getDate()==arrDate[0] && date.getMonth()==arrDate[1]-&& date.getFullYear()==arrDate[2]){
                
    validDate=true;
            }
        }
    /* se validDate e' ancora false richiama l' alert e ritorna false */
        
    if(!validDate){
            
    alert("The Departure Date type is wrong.");
            return 
    false;
        } 
    e' proprio buttato giu al volo ma dovrebbe essere corretto, prova

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    il forum si e' mangiato i backslash, la regexp resta come te l' avevo inizialmente indicata

    if(elDate.value.match(/\d{2}-\d{2}-\d{4}/)){

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    ho provato ma non va...nel senso che mi restituisce sempre l'alert anche quando la data è corretta..

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    scusa ma ora devo scappare e non saro' disponibile per un po'

    il concetto e' spiegato nei commenti e a me funziona perfettamente,
    prova a fare un po' di debug da solo

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    ok ok

    domani vedo anchio bene perche ora devo lasciarlo un'attimo daparte...

    comuqnue grazie!

    ciao!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    ok ho controllato bene e ora funziona!

    grazie mille!




    ora pero ho rpovato a cercare come poter inserire questo controllo in un ciclo in quanto i campi data sono 12(sarebbero 6 file ogniuna con data inizio e data fine) per evitare di scrivere centinaia di righe...

    ho provato con un ciclo for ma non va....



    for (i=0; i<7 i++) {


    var validDate=false;
    var elDate=document.getElementById("sel"+[i]);
    if(elDate.value.match(/\d{2}-\d{2}-\d{4}/)){
    var arrDate=elDate.value.split('-');
    var date=new Date(arrDate[2],arrDate[1]-1,arrDate[0]);
    if(date.getDate()==arrDate[0] && date.getMonth()==arrDate[1]-1 && date.getFullYear()==arrDate[2]){
    validDate=true;
    }
    }
    if(!validDate){
    alert("The Arrival Date type is wrong.");
    return false;
    }


    var validDate=false;
    var elDate=document.getElementById("sel"+[i+10]);
    if(elDate.value.match(/\d{2}-\d{2}-\d{4}/)){
    var arrDate=elDate.value.split('-');
    var date=new Date(arrDate[2],arrDate[1]-1,arrDate[0]);
    if(date.getDate()==arrDate[0] && date.getMonth()==arrDate[1]-1 && date.getFullYear()==arrDate[2]){
    validDate=true;
    }
    }
    if(!validDate){
    alert("The Deaprture Date type is wrong.");
    return false;
    }




    }


    sicuramente sbaglio qualcosa...

    gli ID dei campi sarebbero

    inizio1,inizio2...fino a inizio6

    e

    fine11,fine12...fino a fine16



    ciao

  10. #10
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da stewe19
    for (i=0; i<7 i++) {

    gli ID dei campi sarebbero

    inizio1,inizio2...fino a inizio6
    potrebbe esserci altro, ma questo è sicuramente un errore

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.