Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    Validazione campo data SPECIALE

    Ciao a tutti, scusate fin da ora la richiesta che sto per fare:

    avrei bisogno (e intendo dire che non so niente di javascript, quindi ho bisogno del sorgente completo ) di una funzione da applicare a un campo input, che validi una data in questo modo:

    - campo di partenza vuoto (o già con una data inserita)
    - nel mentre si inserisce una nuova data, la scritta appare, per esempio, in rosso
    - nel momento in cui questa funzione si accorge che la data è stata inserita completamente (e anche correttamente), per esempio "08-10-2007", il dato deve cambiare in gg mese a lettere anno ("08 Ottobre 1980", seguendo l'esempio di prima) e magari in altro colore (per esempio verde)

    il tutto, ovviamente, senza bisogno di premere alcun tasto.

    Ripeto l'esempio:
    voglio inserire 08-10-2007
    fino a quando non ho inserito l'ultimo carattere (il 7 di 2007), vedo "08-10-200" (in rosso)
    nel momento in cui inserisco il 7, la data è quindi inserita completamente, e vedo "08 Ottobre 2007" (in verde)

    Grazie a tutti in anticipo, in particolare a quelli che forniranno una soluzione ma anche a chi non mi manderà all'altro paese

    va beh dai... grazie anche a chi mi manda all'altro paese... (quindi troppi grazie dovrò dire)

  2. #2
    Utente di HTML.it L'avatar di lake86
    Registrato dal
    Dec 2006
    Messaggi
    705
    dai appena ho tempo te lo faccio, prima di domenica te lo posto

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Vedi se può andare :master:

    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>
        <style type="text/css">
            BODY
            {
                BACKGROUND-COLOR: white;
                FONT-FAMILY: Verdana, Helvetica, sans-serif;
                FONT-SIZE: .8em;
            }
            H1, H2, H3, H4, H5 
            {
                COLOR: #003366;
            }
            input {border:1px black solid;}
        
        </style>
        <script language="javascript" type="text/javascript">
    // <!CDATA[
    
    function $() {
      var elements = new Array();
    
      for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string')
          element = document.getElementById(element);
    
        if (arguments.length == 1)
          return element;
    
        elements.push(element);
      }
    
      return elements;
    }
    
    
    
    /*---------------------------------------------------------------------
    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.
    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
    	.day	= giorno (1 - 31)
    	.data   = oggetto data
    ---------------------------------------------------------------------*/
    function isdate(dateStr) 
    {
    	
    	var ret = new Object();
    	ret.isdate = false;
    	ret.error = "";
    	ret.year = 0;
    	ret.month = 0;
    	ret.monthname = "";
    	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 = /^\s*(\d{1,2})(\/|-|\.)(\d{1,2})(\2)(\d{2}|\d{4})\s*$/;
        var datePat = /^\s*(\d{1,2})(\/|-|\.)(\d{1,2})(\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;
        }
        return ret;
    }
    
    
    //------------------------------------------------
    //valida la stringa dateStr
    //------------------------------------------------
    function IsDate(dateStr)
    {
    	var datePat = /^((3[01]|[12]\d|0?[1-9])\/(0?[13578]|10|12)\/(\d\d)?\d\d|(30|[12]\d|0?[1-9])\/(0?[469]|11)\/(\d\d)?\d\d|(2[0-8]|[01]\d|0?[1-9])\/(0?2)\/(\d\d)?\d\d|29\/(0?2)\/(1200|1600|2000|2400|2800|00)|29\/(0?2)\/(\d\d)?(0[48]|[2468][048]|[13579][26]))$/;
        var matchArray = dateStr.match(datePat); 
    	return !(matchArray == null);
    	
    }
    
    
    
    
    //---------------------------------------------------------------------------
    //Confronta le due stringhe data d1 e d2 e restituisce:
    //null se d1 o d2 non sono date valide
    //-1 se d1 < d2
    // 0 se d1 = d2
    // 1 se d1 > d2
    //---------------------------------------------------------------------------
    function dateComp(d1, d2)
    {
    	var isdate1 = isdate(d1);
    	var isdate2 = isdate(d2);
    
    	if(!isdate1.isdate || !isdate2.isdate) return null;
    	
    	var d1 = new Date(isdate1.year, isdate1.month-1, isdate1.day);
    	var d2 = new Date(isdate2.year, isdate2.month-1, isdate2.day);
    
    	if(d1.getTime() == d2.getTime()) 
    		return 0;
    	else if(d1.getTime() < d2.getTime()) 
    		return -1;
    	else if(d1.getTime() > d2.getTime()) return 1;	
    
    }
    
    document.onkeypress = document_onkeypress;
    function document_onkeypress(e) 
    {
    	var code;
    	if (!e) var e = window.event;
    	if (e.keyCode) code = e.keyCode; 
    	else if (e.which) code = e.which;
    	var character = String.fromCharCode(code);
    	var target = (e.target)?e.target:e.srcElement;
    	var id = target.id;
    	var CorrenteSeparatoreDecimale = '<%=CorrenteSeparatoreDecimale%>'.charCodeAt(0);
    	
    	//integer
    	if(id == "text1" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if ( !((code >= 48 && code <= 57 ) || code == 8 || code == 37 || code == 39 || code == 36 || code == 35)  ) 
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				if(e.preventDefault) e.preventDefault;
    				return false;
    			}
    		}
    	}
    	//float
    	else if(id == "text2" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if ( !((code >= 48 && code <= 57 ) || code == CorrenteSeparatoreDecimale || code == 8 || code == 37 || code == 39 || code == 36 || code == 35)  ) 
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				if(e.preventDefault) e.preventDefault;
    				return false;
    			}
    		}
    	}
    	//data
    	else if(id == "Text1" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if ( !((code >= 48 && code <= 57 ) || code == 47 || code == 8 || code == 37 || code == 39 || code == 36 || code == 35)  ) 
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				if(e.preventDefault) e.preventDefault;
    				return false;
    			}
    			
    		}
    		else
    		{
    		    if(id == "Text1")
    		        window.setTimeout(function(){ controllaData.call(target); }, 1);
    		    
    		}
    	}
    
    	//sostituzione del codice digitato
    	else if(id == "text4" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if(code == 46)
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				var newEvent = document.createEvent("KeyEvents"); 
    				newEvent.initKeyEvent("keypress", true, true, document.defaultView, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, 0, "*".charCodeAt(0)) ;
        			
    				if(e.preventDefault) e.preventDefault();
    				target.dispatchEvent(newEvent);
    				return false;
    			}
    		}
    
    	}
    	
    }
    
    
    window.onload = window_onload;
    function window_onload()
    {
        var d = $("Text1");
        d.focus();
        
    }
    
    function controllaData()
    {
        //$("div1").innerHTML = this.value;
        var d = this.value;
        var ret = isdate(d);
        if(!ret.isdate)
        {
            this.style.color = "red";
        }
        else
        {
            this.style.color = "blue";
            this.value = ret.day + " " + ret.monthname + " " + ret.year;
        }
        
    }
    
    
    // ]]>
        </script>
    </head>
    <body>
        <h3>prova data</h3>
        <input id="Text1" type="text" />
        
    
    
        <div id="div1"></div>
    </body>
    </html>
    Pietro

  4. #4
    SEI UN GRANDE!!!

    ma è possibile cambiare lo slash con il meno? (invece che inserire 22/03/2007 vorrei poter inserire 22-03-2007)

    ribadisco il concetto del "SEI UN GRANDE"....

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da gasparirob
    SEI UN GRANDE!!!

    ma è possibile cambiare lo slash con il meno? (invece che inserire 22/03/2007 vorrei poter inserire 22-03-2007)

    ribadisco il concetto del "SEI UN GRANDE"....
    certo che si può, lasciami un po' di tempo. Nel frattempo, perchè non ci provi?

    ps. basta cambiare il codice del carattere / col codice del carattere - quando intercetti il tasto premuto
    Pietro

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    adesso queste sono date valide:

    15/3/1999

    15.3.1999

    15-3-1999

    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>
        <style type="text/css">
            BODY
            {
                BACKGROUND-COLOR: white;
                FONT-FAMILY: Verdana, Helvetica, sans-serif;
                FONT-SIZE: .8em;
            }
            H1, H2, H3, H4, H5 
            {
                COLOR: #003366;
            }
            input {border:1px black solid;}
        
        </style>
        <script language="javascript" type="text/javascript">
    // <!CDATA[
    
    function $() {
      var elements = new Array();
    
      for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string')
          element = document.getElementById(element);
    
        if (arguments.length == 1)
          return element;
    
        elements.push(element);
      }
    
      return elements;
    }
    
    
    
    /*---------------------------------------------------------------------
    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.
    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
    	.day	= giorno (1 - 31)
    	.data   = oggetto data
    ---------------------------------------------------------------------*/
    function isdate(dateStr) 
    {
    	
    	var ret = new Object();
    	ret.isdate = false;
    	ret.error = "";
    	ret.year = 0;
    	ret.month = 0;
    	ret.monthname = "";
    	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 = /^\s*(\d{1,2})(\/|-|\.)(\d{1,2})(\2)(\d{2}|\d{4})\s*$/;
        var datePat = /^\s*(\d{1,2})(\/|-|\.)(\d{1,2})(\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;
        }
        return ret;
    }
    
    
    //------------------------------------------------
    //valida la stringa dateStr
    //------------------------------------------------
    function IsDate(dateStr)
    {
    	var datePat = /^((3[01]|[12]\d|0?[1-9])\/(0?[13578]|10|12)\/(\d\d)?\d\d|(30|[12]\d|0?[1-9])\/(0?[469]|11)\/(\d\d)?\d\d|(2[0-8]|[01]\d|0?[1-9])\/(0?2)\/(\d\d)?\d\d|29\/(0?2)\/(1200|1600|2000|2400|2800|00)|29\/(0?2)\/(\d\d)?(0[48]|[2468][048]|[13579][26]))$/;
        var matchArray = dateStr.match(datePat); 
    	return !(matchArray == null);
    	
    }
    
    
    
    
    //---------------------------------------------------------------------------
    //Confronta le due stringhe data d1 e d2 e restituisce:
    //null se d1 o d2 non sono date valide
    //-1 se d1 < d2
    // 0 se d1 = d2
    // 1 se d1 > d2
    //---------------------------------------------------------------------------
    function dateComp(d1, d2)
    {
    	var isdate1 = isdate(d1);
    	var isdate2 = isdate(d2);
    
    	if(!isdate1.isdate || !isdate2.isdate) return null;
    	
    	var d1 = new Date(isdate1.year, isdate1.month-1, isdate1.day);
    	var d2 = new Date(isdate2.year, isdate2.month-1, isdate2.day);
    
    	if(d1.getTime() == d2.getTime()) 
    		return 0;
    	else if(d1.getTime() < d2.getTime()) 
    		return -1;
    	else if(d1.getTime() > d2.getTime()) return 1;	
    
    }
    
    document.onkeypress = document_onkeypress;
    function document_onkeypress(e) 
    {
    	var code;
    	if (!e) var e = window.event;
    	if (e.keyCode) code = e.keyCode; 
    	else if (e.which) code = e.which;
    	var character = String.fromCharCode(code);
    	var target = (e.target)?e.target:e.srcElement;
    	var id = target.id;
    	var CorrenteSeparatoreDecimale = '.'.charCodeAt(0);
    	
    	//integer
    	if(id == "text1" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if ( !((code >= 48 && code <= 57 ) || code == 8 || code == 37 || code == 39 || code == 36 || code == 35)  ) 
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				if(e.preventDefault) e.preventDefault;
    				return false;
    			}
    		}
    	}
    	//float
    	else if(id == "text2" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if ( !((code >= 48 && code <= 57 ) || code == CorrenteSeparatoreDecimale || code == 8 || code == 37 || code == 39 || code == 36 || code == 35)  ) 
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				if(e.preventDefault) e.preventDefault;
    				return false;
    			}
    		}
    	}
    	//data
    	else if(id == "Text1" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if ( !((code >= 48 && code <= 57 ) || code == 47 || code == 8 || code == 37 || code == 39 || code == 36 || code == 35 || code == 45 || code == 46)  ) 
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				if(e.preventDefault) e.preventDefault;
    				return false;
    			}
    			
    		}
    		else
    		{
    		    if(id == "Text1")
    		        window.setTimeout(function(){ controllaData.call(target); }, 1);
    		    
    		}
    	}
    
    	//sostituzione del codice digitato
    	else if(id == "text4" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if(code == 46)
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				var newEvent = document.createEvent("KeyEvents"); 
    				newEvent.initKeyEvent("keypress", true, true, document.defaultView, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, 0, "*".charCodeAt(0)) ;
        			
    				if(e.preventDefault) e.preventDefault();
    				target.dispatchEvent(newEvent);
    				return false;
    			}
    		}
    
    	}
    	
    }
    
    
    window.onload = window_onload;
    function window_onload()
    {
        var d = $("Text1");
        d.focus();
        
    }
    
    function controllaData()
    {
        //$("div1").innerHTML = this.value;
        var d = this.value;
        var ret = isdate(d);
        if(!ret.isdate)
        {
            this.style.color = "red";
        }
        else
        {
            this.style.color = "blue";
            this.value = ret.day + " " + ret.monthname + " " + ret.year;
        }
        
    }
    
    
    // ]]>
        </script>
    </head>
    <body>
        <h3>prova data</h3>
        <input id="Text1" type="text" />
        
    
    
        <div id="div1"></div>
    </body>
    </html>
    Pietro

  7. #7
    Non ho parole...
    che dire...

    .....
    ....

    GRAZIE!!!!

    oppure...
    ...
    ...

    SEI UN GRANDE!!

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    lascia perdere, se ti funziona sono contento. ciao
    Pietro

  9. #9
    Ciao Pietro perdonami, avrei bisogno di una modifica... sto cercando di fare in modo di controllare che la data inserita sia inferiore uguale al giorno di "oggi" (e in questo caso la data deve rimanere blu), ma il tuo codice sta troppo superiore alle mie facoltà intellettuali :master:

    se non è troppo difficile (per te, intendo) mi faresti questa cortesia?

    Grazie cmq in ogni caso... già hai fatto troppo...

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    prova così:

    Data valida = datavalida e data <= oggi
    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>
        <style type="text/css">
            BODY
            {
                BACKGROUND-COLOR: white;
                FONT-FAMILY: Verdana, Helvetica, sans-serif;
                FONT-SIZE: .8em;
            }
            H1, H2, H3, H4, H5 
            {
                COLOR: #003366;
            }
            input {border:1px black solid;}
        
        </style>
        <script language="javascript" type="text/javascript">
    // <!CDATA[
    
    function $() {
      var elements = new Array();
    
      for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string')
          element = document.getElementById(element);
    
        if (arguments.length == 1)
          return element;
    
        elements.push(element);
      }
    
      return elements;
    }
    
    
    
    /*---------------------------------------------------------------------
    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.
    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
    	.day	= giorno (1 - 31)
    	.data   = oggetto data
    ---------------------------------------------------------------------*/
    function isdate(dateStr) 
    {
    	
    	var ret = new Object();
    	ret.isdate = false;
    	ret.error = "";
    	ret.year = 0;
    	ret.month = 0;
    	ret.monthname = "";
    	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 = /^\s*(\d{1,2})(\/|-|\.)(\d{1,2})(\2)(\d{2}|\d{4})\s*$/;
        var datePat = /^\s*(\d{1,2})(\/|-|\.)(\d{1,2})(\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;
        }
        return ret;
    }
    
    
    //------------------------------------------------
    //valida la stringa dateStr
    //------------------------------------------------
    function IsDate(dateStr)
    {
    	var datePat = /^((3[01]|[12]\d|0?[1-9])\/(0?[13578]|10|12)\/(\d\d)?\d\d|(30|[12]\d|0?[1-9])\/(0?[469]|11)\/(\d\d)?\d\d|(2[0-8]|[01]\d|0?[1-9])\/(0?2)\/(\d\d)?\d\d|29\/(0?2)\/(1200|1600|2000|2400|2800|00)|29\/(0?2)\/(\d\d)?(0[48]|[2468][048]|[13579][26]))$/;
        var matchArray = dateStr.match(datePat); 
    	return !(matchArray == null);
    	
    }
    
    
    
    
    //---------------------------------------------------------------------------
    //Confronta le due stringhe data d1 e d2 e restituisce:
    //null se d1 o d2 non sono date valide
    //-1 se d1 < d2
    // 0 se d1 = d2
    // 1 se d1 > d2
    //---------------------------------------------------------------------------
    function dateComp(d1, d2)
    {
    	var isdate1 = isdate(d1);
    	var isdate2 = isdate(d2);
    
    	if(!isdate1.isdate || !isdate2.isdate) return null;
    	
    	var d1 = new Date(isdate1.year, isdate1.month-1, isdate1.day);
    	var d2 = new Date(isdate2.year, isdate2.month-1, isdate2.day);
    
    	if(d1.getTime() == d2.getTime()) 
    		return 0;
    	else if(d1.getTime() < d2.getTime()) 
    		return -1;
    	else if(d1.getTime() > d2.getTime()) return 1;	
    
    }
    
    document.onkeypress = document_onkeypress;
    function document_onkeypress(e) 
    {
    	var code;
    	if (!e) var e = window.event;
    	if (e.keyCode) code = e.keyCode; 
    	else if (e.which) code = e.which;
    	var character = String.fromCharCode(code);
    	var target = (e.target)?e.target:e.srcElement;
    	var id = target.id;
    	var CorrenteSeparatoreDecimale = '<%=CorrenteSeparatoreDecimale%>'.charCodeAt(0);
    	
    	//integer
    	if(id == "text1" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if ( !((code >= 48 && code <= 57 ) || code == 8 || code == 37 || code == 39 || code == 36 || code == 35)  ) 
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				if(e.preventDefault) e.preventDefault;
    				return false;
    			}
    		}
    	}
    	//float
    	else if(id == "text2" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if ( !((code >= 48 && code <= 57 ) || code == CorrenteSeparatoreDecimale || code == 8 || code == 37 || code == 39 || code == 36 || code == 35)  ) 
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				if(e.preventDefault) e.preventDefault;
    				return false;
    			}
    		}
    	}
    	//data
    	else if(id == "Text1" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if ( !((code >= 48 && code <= 57 ) || code == 47 || code == 8 || code == 37 || code == 39 || code == 36 || code == 35)  ) 
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				if(e.preventDefault) e.preventDefault;
    				return false;
    			}
    			
    		}
    		else
    		{
    		    if(id == "Text1")
    		        window.setTimeout(function(){ controllaData.call(target); }, 1);
    		    
    		}
    	}
    
    	//sostituzione del codice digitato
    	else if(id == "text4" || id == "_txt_data_documento" || id == "txt_data_protocollo_industra")
    	{
    		if(code == 46)
    		{
    			if (window.event) 
    			{
    				e.returnValue = false;
    				e.cancelBubble;
    			}
    			else
    			{
    				var newEvent = document.createEvent("KeyEvents"); 
    				newEvent.initKeyEvent("keypress", true, true, document.defaultView, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, 0, "*".charCodeAt(0)) ;
        			
    				if(e.preventDefault) e.preventDefault();
    				target.dispatchEvent(newEvent);
    				return false;
    			}
    		}
    
    	}
    	
    }
    
    
    window.onload = window_onload;
    function window_onload()
    {
        var d = $("Text1");
        d.focus();
        
    }
    
    function controllaData()
    {
        //$("div1").innerHTML = this.value;
        var d = this.value;
        var ret = isdate(d);
        var oggi = new Date();
        if(ret.isdate && ret.data.getTime() <= oggi.getTime() )
        {
            this.style.color = "blue";
            this.value = ret.day + " " + ret.monthname + " " + ret.year;
        }
        else
            this.style.color = "red";
        
    }
    
    // ]]>
        </script>
    </head>
    <body>
        <h3>prova data: la data valida è <= alla data odierna</h3>
        <input id="Text1" type="text" />
        
    
    
        <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.