Visualizzazione dei risultati da 1 a 5 su 5

Discussione: validare una data

  1. #1

    validare una data

    Salve, ho una input text in cui l'utente deve inserire una data.
    Volevo sapere se c'è un'istruzione per verificare se la data esiste o meno.
    Per fare un esempio l'utente potrebbe mettere date come 31 aprile oppure 31 novembre, date che non esistono.
    Per questi mesi posso anche cavarmela con una serie di istruzioni if ma per febbraio diventa un po più complicato dal momento che c'è anche un'anno bisestile.
    Ho cercato su internet ma non ho trovato nulla di concreto.
    Tengo a precisare che il codice dovrà essere java script lato client.
    Mi sapete dare qualche informazione?
    Grazie.
    Luigi

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133

    Re: validare una data

    Originariamente inviato da ldimaio
    ....
    Ho cercato su internet ma non ho trovato nulla di concreto.
    ...
    E cosa hai cercato:
    da google http://www.google.it/search?q=contro...ient=firefox-a
    primo link http://free-script.it/post/Script_ja...za_data-97.htm
    che una volta leggermente modifica diventa cosi:
    codice:
    <html>
    
    <head>
    <script type="text/javascript">
    
    function controllo_data(stringa){
    	var espressione = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
    	if (!espressione.test(stringa))
    	{
    		alert("data formato errata gg/mm/aaaa")
    		document.getElementById('data').value="";
    	    return false;
    	}else{
    		anno = parseInt(stringa.substr(6),10);
    		mese = parseInt(stringa.substr(3, 2),10);
    		giorno = parseInt(stringa.substr(0, 2),10);
    		
    		var data=new Date(anno, mese-1, giorno);
    		if(data.getFullYear()==anno && data.getMonth()+1==mese && data.getDate()==giorno){
    			return true;
    		}else{
    			alert("data errata")
    			document.getElementById('data').value="";
    			return false;
    		}
    	}
    }
    </script>
    
    
    </head>
    
    <body marginheight="0" marginwidth="0">
    
    
    
      <input type="text" id="data" value="" onChange="controllo_data(this.value)"  />
    </p>
    </body>
    
    </html>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3

    Re: validare una data

    Originariamente inviato da ldimaio
    Salve, ho una input text in cui l'utente deve inserire una data.
    Volevo sapere se c'è un'istruzione per verificare se la data esiste o meno.
    Per fare un esempio l'utente potrebbe mettere date come 31 aprile oppure 31 novembre, date che non esistono.
    Per questi mesi posso anche cavarmela con una serie di istruzioni if ma per febbraio diventa un po più complicato dal momento che c'è anche un'anno bisestile.
    Ho cercato su internet ma non ho trovato nulla di concreto.
    Tengo a precisare che il codice dovrà essere java script lato client.
    Mi sapete dare qualche informazione?
    Grazie.
    Luigi
    La gestione delle date in javascript (per me) è oscena. Ti consiglio questa libreria:

    http://www.datejs.com/

    ti permette di scrivere le date come hai detto te, e tante altre cose.

  4. #4
    Innanzitutto ringrazio tutti coloro che mi hanno risposto.
    Ho letto il messaggio di cavicchiandrea ma, siccome il codice è un po complicato per me principiante, non ho replicato in quanto non sicuro di averlo capito bene ma mi sembra che il codice scritto sia una cosa diversa da quello che cercavo.
    Sicuramente sono stato io poco chiaro nel formulare la domanda e la conferma mi arriva dal secondo messaggio, quello di carlogh per cui faccio chiarezza su quello che stò cercando.
    Ho creato una form in html con all'interno tre caselle select con i relativi valori, una casella per il giorno, una per il mese ed una per l'anno.
    Ne faccio un breve esempio:

    <select name="giorno">
    <option value=""></option>
    <option value="01">01</option>
    <option value="02">02</option>
    <option value="03">03</option>
    <option value="04">04</option>
    <option value="05">05</option>
    <option value="06">06</option>
    <option value="07">07</option>

    ecc. ecc. e così per il mese e per l'anno per cui, mettendo insieme in una variabile i tre valori separati da "/", esce fuori una data grammaticamente corretta (se possiamo dire così) es.: 21/02/2010.
    Il mio problema è che l'utente potrebbe selezionare la data 31/04/2010, data che non esiste in quanto il mese di aprile è formato di 30 giorni come pure altri mesi.
    Potrei gestire il tutto con delle istruzioni if ma mi sarebbe un po complicato per febbraio dal momento che esiste anche l'anno bisestile.
    Pensavo che esistesse una funzione che mi dicesse se la data selezionata esista o meno.
    Questo è il mio problema, se c'è una soluzione o del testo da studiare gradirei avere i link.
    Grazie mille a tutti.
    Luigi

  5. #5
    Javascript conta i mesi a partire da zero: gennaio=0, dicembre=11

    E non premette gli zero. Comunque siccome alla fine del giro l'oggetto data riconosce anche il formato con lo zerofill, poco male. Ma è bene saperlo.

    Comunque, assumendo tu passi una data con quel formato ad una funzione che si attenda esattamente quel formato da te indicato, si può fare quello che cerchi in poche righe.

    Sono sorpreso dal fatto che in così tanti script online si forniscano tutt'oggi procedure decisamente lunghette (esempio) per validare le date e che spesso si continui ad usare il modulus (%) per controllare se uno ha inserito 29 febbraio in un anno non bisestile, mentre javascript con l'oggetto date valida già da sè (oddio: sono sorpreso fino ad un certo punto... perchè io stesso anni fa ancora effettuavo validazioni con script inutilmente lunghi. In realtà talora si scopre in un secondo momento che new Date corregge anche le date sbagliate da sè).

    Ad ogni modo prendendo spunto da questo thread ho appena ideato una funzione che effettua questa validazione in 5 righe scarse: Javascript Fast Human-Friendly-Data Format Data Validation.
    Vedi te se fa al tuo caso.

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.