Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di billy1
    Registrato dal
    Jun 2001
    Messaggi
    549

    cerco una funzione javascript x controllare un campo data se inserito correttamente

    ciao,

    cerco una funzione javascript x controllare un campo data se inserito correttamente

    del tipo gg/mm/aaaa

    oppure

    g/m/aaaa
    Il fumo fa male a te e agli altri.
    Rispettate chi non vuole respirare il fumo passivo.

  2. #2
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    NOn si capisce cosa ti serve e per quale motivo.. un conto se mi dici che questo è un fatto realativo soltanto all'anno.. cioè:

    2007 anzichè 07

    perchè epr quanto riguarda giorno e mese.. se oggi è 1/2 che differenza fa se tra dieci giorni e dieci mesi è 11/12?

    Comunque se vuoi controllare questo, devi fare qualche array:

    num = new Array (1, 2, 3, 4, 5, 6, 7, 8, 9);
    num_doppio = new Array (10, 11, 12, 13, 14, 15, 16, 17, 18, 19...);

    e poi fai il controllo se si è immesso un num_doppio o se num!

    Ciao!

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da Igreo
    Comunque se vuoi controllare questo, devi fare qualche array:

    num = new Array (1, 2, 3, 4, 5, 6, 7, 8, 9);
    num_doppio = new Array (10, 11, 12, 13, 14, 15, 16, 17, 18, 19...);

    e poi fai il controllo se si è immesso un num_doppio o se num!
    tralasciando questa parte, che non e' assolutamente consigliabile,
    approfondisci precisamente cosa vuoi:
    l' utente puo' inserire g/m/aaaa, oppure gg/mm/aaaa?
    vuoi validare formalmente quanto inserito?
    vuoi una convalida calendario alla mano (=la data e' possibile, non e' un 30/2/2004)?
    vuoi che se inserito g/m/aaaa sia riportata la data sotto forma gg/mm/aaaa?
    insomma.. spiegati.

  4. #4
    Utente di HTML.it L'avatar di billy1
    Registrato dal
    Jun 2001
    Messaggi
    549

    no

    ciao

    cioe' ho bisognio semplicemente che cio' che viene inserito sia una data.

    esempio :

    corretto :

    1/1/03

    01/1/03

    01/01/2003


    non corretto :

    sdfsdfsdf

    21/23/2004

    xxxxx

    21 / 03 / 2004
    Il fumo fa male a te e agli altri.
    Rispettate chi non vuole respirare il fumo passivo.

  5. #5
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Ti basta fare degl'array come ti ho descritto in cui ci metti tutti i numeri esatti e poi fai la funzione per il form:

    codice:
    <html>
    <head>
    <script>
    giorno= new Array("1","2","3","4","5"... fino a 31);
    mese= lo stesso fino a 12;
    anno= metti gli anni presenti e futuri.. non so seti servono anche i passati;
    
    funtion valida_Data(mio_form) {
    
    if (document.mio_form.day.value == giorno &&
     document.mio_form.month.value == mese &&
     document.mio_form.year.value == anno) return true;
    else {
    alert("Immetti dei dati corretti GG/MM/ANNO"); return true;
    }
    }
    </script>
    </head>
    <body>
    <FORM name="my_form" onclick="Javascript: valida_Data(this);">
    ...ti fai le varie select con le option
    ...alle select gli metti il nome di 
    day
    month
    year
    <IMPUT type="submit" value="INVIA">
    </FORM>
    
    </BODY>
    </HTML>
    ..Prova a vedere!!^^

    Ciao!

  6. #6
    Utente di HTML.it L'avatar di billy1
    Registrato dal
    Jun 2001
    Messaggi
    549

    ok ora provo. poi mi serve una cosa ulteriore

    grazie, ora lo testo.

    Dovrei poi fare un altro controllo javascript :

    dovrei NON permettere che il form venga inviato se la data di nascita inserita e' una data che indica che la persona non e' maggiorenne al momento della compilazione del form.

    cioe' in pratica solo l'utente che ha almeno 18 anni al momento della compilazione del form ,puo' proseguire e inviare il form.

    Potete aiutarmi ?

    grazie

    PS : non per siti porno...
    Il fumo fa male a te e agli altri.
    Rispettate chi non vuole respirare il fumo passivo.

  7. #7
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    @ Igreo: sei pregato di testare i tuoi consigli prima di postarli... nello specifico caso dovresti impiegarci meno di un mese per trovare qualcosa di realmente valido

    @ billy1: scusa l'intromissione
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  8. #8
    Utente di HTML.it L'avatar di Igreo
    Registrato dal
    Jun 2004
    Messaggi
    1,114
    Prendiamo il tutto come esempio... più o meno valido! ^^
    ..Faccio quello che posso per aiutare una Community che mi ha insegnato qualcosa.

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da Igreo
    Prendiamo il tutto come esempio... più o meno valido! ^^
    ..Faccio quello che posso per aiutare una Community che mi ha insegnato qualcosa.
    Grazie, sarebbe meglio se almeno per ora ti astenessi.

    Mi scuso a nome della Community per l'insuccesso.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Prova queste: sono vecchie funzioni, magari da aggiustare

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Pagina senza titolo</title>
    
        <script language="javascript" type="text/javascript">
    // <!CDATA[
    
    window.onload = window_onload;
    function window_onload()
    {
        document.getElementById("Button1").onclick = Button1_onclick;
    }
    
    function Button1_onclick()
    {
        var d = document.getElementById("Text1").value;
        var target = document.getElementById("div1");
                        
        var et = eta(d, (new Date()).toStringDate() );
        if(isNaN(et))
        {
            alert(et);
        }
        else
        {
            if(et >= 18)
            {
                alert("Tu hai " + et + " anni; invio la richiesta...");
                document.getElementById("form1").submit();
            }
            else
                alert("Sei minorenne; non puoi entrare nel sito");
        }
    }
    
    Date.prototype.toStringDate = function ()
    {
        return this.getDate() + "/" + (this.getMonth() + 1) + "/" + this.getFullYear()
    }
    
    /*---------------------------------------------------------------------
    Questa funzione accetta una variabile stringa e verifica se e una data.
    La data deve essere nel formato giorno mese anno. Il giorno e il mese
    devono essere di 1 o 2 cifre, l'anno deve essere di 2 o 4 cifre.
    se year4 = true, l'anno deve essere di 4 cifre,
    se year4 = false o manca, l'anno può essere di 4 o 2 cifre
    Il delimitatore deve essere / o - o .
    Restituisce un oggetto con le proprieta:
    	.isdate = vero o falso
    	.error	= messaggio errore
    	.year	= anno
    	.month	= mese (1 - 12)
    	.monthname  = Gennaio - Dicembre
    	.dayofweek = giorno settimana Lunedì-Domenica
    	.day	= giorno (1 - 31)
    	.data   = oggetto data
    ---------------------------------------------------------------------*/
    function isdate(dateStr, year4) 
    {
    	if(typeof(year4) == "undefined")
    	    var year4 = false;
    	
    	var ret = new Object();
    	ret.isdate = false;
    	ret.error = "";
    	ret.year = 0;
    	ret.month = 0;
    	ret.monthname = "";
    	ret.dayofweek = "";
    	ret.day = 0;
    	ret.data = null;
    	
    	
        // inizio stringa
        // 1 o 2 cifre
        // / o - o .
        // 1 o 2 cifre
        // / o - o .
    	// 4 cifre
    	// fine stringa    
        //var datePat = /^(\d{1,2})(\/|-|.)(\d{1,2})(\/|-|.)(\d{4})$/;
        var datePat = null;
        if(year4)
            datePat = /^\s*(\d{1,2})(\/|-|\.)(\d{1,2})(\2)(\d{4})\s*$/;
        else
            datePat = /^\s*(\d{1,2})(\/|-|\.)(\d{1,2})(\2)(\d{2}|\d{4})\s*$/;
        
        //restituisce, allo stesso modo di una matrice, i risultati di una ricerca
        //di una stringa utilizzando un oggetto Regular Expression
        var matchArray = dateStr.match(datePat); 
    
        if (matchArray == null) {
            ret.error = "Per favore, introduci la data nei formati gg/mm/aaaa o gg-mm-aaaa o gg.mm.aaaa";
            return ret;
        }
    
        day = matchArray[1];
        month = matchArray[3]; 
        year = matchArray[5];
        if(year.length == 2)
    		if(parseInt(year,10) < 30)
    			year = parseInt(year,10) + 2000;
    		else
    			year = parseInt(year,10) + 1900;
    
        if (month < 1 || month > 12) { // il mese deve essere compreso tra 1 e 12
            ret.error = "Il mese deve essere compreso tra 1 e 12.";
            return ret;
        }
    
        if (day < 1 || day > 31) {//il giorno non puo essere < 1 e > 31
            ret.error = "Il giorno deve essere compreso tra 1 e 31";
            return ret;
        }
    
        if ((month==4 || month==6 || month==9 || month==11) && day==31) {
            //i mesi aprile, giugno, settembre, novembre, hanno 30 giorni
            ret.error = "Il mese " + month + " non ha 31 giorni!";
            return ret;
        }
    
        if (month == 2) { // verifica se l'anno e bisestile: febbraio puo avere 29 giorni
            var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
            if (day > 29 || (day==29 && !isleap)) {
    			ret.error = "Febbraio " + year + " non ha " + day + " giorni!";
    			return ret;
            }
        }
        isDateError = "";
        // se sono qui, la data e valida!
    	ret.isdate = true;
    	ret.error = "";
    	ret.year = year;
    	ret.month = month;
    	ret.day = day;
    	ret.data = new Date(year, (month - 1), day);
        switch(parseInt(month,10))
        {
            case 1: ret.monthname = "Gennaio"; break;
            case 2: ret.monthname = "Febbraio"; break;
            case 3: ret.monthname = "Marzo"; break;
            case 4: ret.monthname = "Aprile"; break;
            case 5: ret.monthname = "Maggio"; break;
            case 6: ret.monthname = "Giugno"; break;
            case 7: ret.monthname = "Luglio"; break;
            case 8: ret.monthname = "Agosto"; break;
            case 9: ret.monthname = "Settembre"; break;
            case 10: ret.monthname = "Ottobre"; break;
            case 11: ret.monthname = "Novembre"; break;
            case 12: ret.monthname = "Dicembre"; break;
            default: ret.monthname = ""; break;
        }
        //ret.dayofweek
        switch( ret.data.getDay() )
        {
            case 0: ret.dayofweek = "Domenica"; break;
            case 1: ret.dayofweek = "Lunedì"; break;
            case 2: ret.dayofweek = "Martedì"; break;
            case 3: ret.dayofweek = "Mercoledì"; break;
            case 4: ret.dayofweek = "Giovedì"; break;
            case 5: ret.dayofweek = "Venerdì"; break;
            case 6: ret.dayofweek = "Sabato"; break;
            default: ret.dayofweek = ""; break;
        
        }
        
        return ret;
    }
    
    
    
    //------------------------------------------------------------------------------
    //calcola l'eta (in anni) data la data di nascita e la data di controllo
    //------------------------------------------------------------------------------
    function Eta(dataNascita, dataControllo)
    {
    	var anni;
    	anni = dataControllo.getFullYear() - dataNascita.getFullYear();
    	anni -= (( dataControllo < new Date(dataControllo.getFullYear(),dataNascita.getMonth() , dataNascita.getDate() )  )?1:0 );
    	return anni;
    }
    
    
    //------------------------------------------------------------------------------
    //calcola l'eta (in anni) data la stringa data di nascita e la  stringa data di controllo
    //------------------------------------------------------------------------------
    function eta(stringaDataNascita, stringaDataControllo)
    {
    	var dataNascita, dataControllo, Anni;
    	var d;
    	
    	d = isdate(stringaDataNascita);
    	if(d.isdate)
    	{
    		dataNascita = new Date(d.year,d.month - 1,d.day);
    	}
    	else
    	{
    		return "Data di nascita non valida";
    	}
    	
    	d = isdate(stringaDataControllo);
    	if(d.isdate)
    	{
    		dataControllo = new Date(d.year,d.month - 1,d.day);
    	}
    	else
    	{
    		return "Data di controllo non valida";
    	}
    	
    	if(dataControllo < dataNascita)
    	{
    		return "La data di controllo deve essere maggiore della data di nascita";
    	}
    	
    	return Eta(dataNascita, dataControllo);
    
    }
    
    // ]]>
        </script>
    </head>
    <body>
        <form id="form1" method="post" action="http://forum.html.it/forum/showthread.php?s=&threadid=1113321">
            <span>Inserisci data di nascita: </span>
            
    
            <input id="Text1" type="text" /><input id="Button1" type="button" value="Controlla e invia" />
        </form>
        <div id="div1"></div>
    </body>
    </html>
    Pietro

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.