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

    data con giorno e mese a 2 cifre

    Salve a tutti.
    Non sono un conoscitore di javascript ma lo utilizzo parecchio grazie alle community del web ed i loro script.
    Ho un form in cui devo inserire la data che verrà poi elaborata in asp.
    Il campo ha un pulsante che apre una piccola popup con dentro un calendario; cliccando sul giorno automaticamente viene scritto nel campo data del form.
    il controllo del form poi verifiva se è stato scritto nella forma corretta ( visto che si può anche non usare il calendario ) e cioè gg/mm/aaaa.
    Il problema e che il calendario nella popup mi inserisce una data che se giorno o mese sono ad una cifra non aggiunge lo 0 e questo mi dà problemi a cascata sia nel controllo form che nell'inserimendo nel database.
    ecco lo script che apre il calendario

    codice:
    <script language="JavaScript">
    // Title: Timestamp picker
    // Description: See the demo at url
    // URL: http://us.geocities.com/tspicker/
    // Script featured on: http://javascriptkit.com/script/script2/timestamp.shtml
    // Version: 1.0
    // Date: 12-05-2001 (mm-dd-yyyy)
    // Author: Denis Gritcyuk <denis@softcomplex.com>; <tspicker@yahoo.com>
    // Notes: Permission given to use this script in any kind of applications if
    //    header lines are left unchanged. Feel free to contact the author
    //    for feature requests and/or donations
    
    function show_calendar(str_target, str_datetime) {
    	var arr_months = ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno",
    		"Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"];
    	var week_days = ["Do", "Lu", "Ma", "Me", "Gi", "Ve", "Sa"];
    	var n_weekstart = 1; // day week starts from (normally 0 or 1)
    
    	var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : str2dt(str_datetime));
    	var dt_prev_month = new Date(dt_datetime);
    	dt_prev_month.setMonth(dt_datetime.getMonth()-1);
    	var dt_next_month = new Date(dt_datetime);
    	dt_next_month.setMonth(dt_datetime.getMonth()+1);
    	var dt_firstday = new Date(dt_datetime);
    	dt_firstday.setDate(1);
    	dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
    	var dt_lastday = new Date(dt_next_month);
    	dt_lastday.setDate(0);
    	
    	// html generation (feel free to tune it for your particular application)
    	// print calendar header
    	var str_buffer = new String (
    		"<html>\n"+
    		"<head>\n"+
    		"	<title>Calendar</title>\n"+
    		"</head>\n"+
    		"<body bgcolor=\"White\">\n"+
    		"<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+
    		"<tr><td bgcolor=\"#4682B4\">\n"+
    		"<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+
    		"<tr>\n	<td bgcolor=\"#4682B4\"><a href=\"javascript:window.opener.show_calendar('"+
    		str_target+"', '"+ dt2dtstr(dt_prev_month)+"'+document.cal.time.value);\">"+
    		"<img src=\"../../images/calendario_prev.gif\" width=\"16\" height=\"16\" border=\"0\""+
    		" alt=\"previous month\"></a></td>\n"+
    		"	<td bgcolor=\"#4682B4\" colspan=\"5\">"+
    		"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"
    		+arr_months[dt_datetime.getMonth()]+" "+dt_datetime.getFullYear()+"</font></td>\n"+
    		"	<td bgcolor=\"#4682B4\" align=\"right\"><a href=\"javascript:window.opener.show_calendar('"
    		+str_target+"', '"+dt2dtstr(dt_next_month)+"'+document.cal.time.value);\">"+
    		"<img src=\"calendario_next.gif\" width=\"16\" height=\"16\" border=\"0\""+
    		" alt=\"next month\"></a></td>\n</tr>\n"
    	);
    
    	var dt_current_day = new Date(dt_firstday);
    	// print weekdays titles
    	str_buffer += "<tr>\n";
    	for (var n=0; n<7; n++)
    		str_buffer += "	<td bgcolor=\"#87CEFA\">"+
    		"<font color=\"white\" face=\"tahoma, verdana\" size=\"2\">"+
    		week_days[(n_weekstart+n)%7]+"</font></td>\n";
    	// print calendar table
    	str_buffer += "</tr>\n";
    	while (dt_current_day.getMonth() == dt_datetime.getMonth() ||
    		dt_current_day.getMonth() == dt_firstday.getMonth()) {
    		// print row heder
    		str_buffer += "<tr>\n";
    		for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
    				if (dt_current_day.getDate() == dt_datetime.getDate() &&
    					dt_current_day.getMonth() == dt_datetime.getMonth())
    					// print current date
    					str_buffer += "	<td bgcolor=\"#FFB6C1\" align=\"right\">";
    				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
    					// weekend days
    					str_buffer += "	<td bgcolor=\"#DBEAF5\" align=\"right\">";
    				else
    					// print working days of current month
    					str_buffer += "	<td bgcolor=\"white\" align=\"right\">";
    
    				if (dt_current_day.getMonth() == dt_datetime.getMonth())
    					// print days of current month
    					str_buffer += "<a href=\"javascript:window.opener."+str_target+
    					".value='"+dt2dtstr(dt_current_day)+"'; window.close();\">"+
    					"<font color=\"black\" face=\"tahoma, verdana\" size=\"2\">";
    				else
    					// print days of other months
    					str_buffer += "<a href=\"javascript:window.opener."+str_target+
    					".value='"+dt2dtstr(dt_current_day)+"'+; window.close();\">"+
    					"<font color=\"gray\" face=\"tahoma, verdana\" size=\"2\">";
    				str_buffer += dt_current_day.getDate()+"</font></a></td>\n";
    				dt_current_day.setDate(dt_current_day.getDate()+1);
    		}
    		// print row footer
    		str_buffer += "</tr>\n";
    	}
    	// print calendar footer
    	str_buffer +=
    		"<form name=\"cal\">\n<tr><td colspan=\"7\" bgcolor=\"#87CEFA\">"+
    		"<font color=\"White\" face=\"tahoma, verdana\" size=\"2\">"+
    		"Time: <input type=\"text\" name=\"time\" value=\""+dt2tmstr(dt_datetime)+
    		"\" size=\"8\" maxlength=\"8\"></font></td></tr>\n</form>\n" +
    		"</table>\n" +
    		"</tr>\n</td>\n</table>\n" +
    		"</body>\n" +
    		"</html>\n";
    
    	var vWinCal = window.open("", "Calendar",
    		"width=200,height=250,status=no,resizable=yes,top=200,left=300");
    	vWinCal.opener = self;
    	var calc_doc = vWinCal.document;
    	calc_doc.write (str_buffer);
    	calc_doc.close();
    }
    // datetime parsing and formatting routimes. modify them if you wish other datetime format
    function str2dt (str_datetime) {
    	var re_date = /^(\d+)\-(\d+)\-(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
    	if (!re_date.exec(str_datetime))
    		return alert("Invalid Datetime format: "+ str_datetime);
    	return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1, RegExp.$4, RegExp.$5, RegExp.$6));
    }
    function dt2dtstr (dt_datetime) {
    	return (new String (
    			dt_datetime.getDate()+"/"+(dt_datetime.getMonth()+1)+"/"+dt_datetime.getFullYear()+" "));
    }
    function dt2tmstr (dt_datetime) {
    	return (new String (
    			dt_datetime.getHours()+":"+dt_datetime.getMinutes()+":"+dt_datetime.getSeconds()));
    }
    
    
    </script>
    questa l'imput text del form
    codice:
    <input type="Text" id="data_inserimento" name="data_inserimento" value="" >
    <a href="javascript:show_calendar('document.modulo.data_inserimento', document.modulo.data_inserimento.value);">
    [img]../../images/calendario.gif[/img]</a> gg/mm/aaaa
    questo il controllo del form
    codice:
            //Effettua il controllo sul campo Data_inserimento 
            else if (document.modulo.data_inserimento.value.substring(2,3) != "/" ||
               document.modulo.data_inserimento.value.substring(5,6) != "/" ||
               isNaN(document.modulo.data_inserimento.value.substring(0,2)) ||
               isNaN(document.modulo.data_inserimento.value.substring(3,5)) ||
               isNaN(document.modulo.data_inserimento.value.substring(6,10))) {
                 alert("Inserire per la data di inserimento una data in formato gg/mm/aaaa");
                  document.modulo.data_inserimento.value = "";
                  document.modulo.data_inserimento.focus();
                  return false;
            }
            else if (document.modulo.data_inserimento.value.substring(0,2) > 31) {
               alert("Impossibile utilizzare un valore superiore a 31 per i giorni");
               document.modulo.data_inserimento.select();
               return false;
            }
            else if (document.modulo.data_inserimento.value.substring(3,5) > 12) {
               alert("Impossibile utilizzare un valore superiore a 12 per i mesi");
               document.modulo.data_inserimento.value = "";
               document.modulo.data_inserimento.focus();
               return false;
            }
            else if (document.modulo.data_inserimento.value.substring(6,10) < 1990) {
               alert("Impossibile utilizzare un valore inferiore a 2005 per l'anno");
               document.modulo.data_inserimento.value = "";
               document.modulo.data_inserimento.focus();
               return false;
            }
    ho bisogno della data gg/mm/aaaa
    Potete aiutarmi?

  2. #2
    Nel primo script, in fondo:
    codice:
    function dt2dtstr (dt_datetime) {
    	var slDay = (dt_datetime.getDate() < 10) ? "0" : "";
    	var slMonth = (dt_datetime.getMonth() < 9) ? "0" : "";
    	return (new String (
    			slDay+dt_datetime.getDate()+"/"+slMonth+(dt_datetime.getMonth()+1)+"/"+dt_datetime.getFullYear()+" "));
    }
    (aggiungi il codice in rosso)

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  3. #3
    Grazie homezappa, funziona benissimo,
    unico problema e che se inserisco una data e voglio modificarla mi da un alert con errore

    Invalid datetime format gg/mm/aaaa

    si può escludere questo controllo visto che lo faccio io dopo nel form?
    Ho fatto delle prove ma non ne sono venuto a capo.
    Tnx

  4. #4
    codice:
    function str2dt (str_datetime) {
    	var re_datetime = /^(\d+)\/(\d+)\/(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
    	var re_date = /^(\d+)\/(\d+)\/(\d+)$/;
    	if (!re_datetime.exec(str_datetime)) {
    		if (!re_date.exec(str_datetime)) {
    			return alert("Invalid Datetime format: "+ str_datetime);
    		}
    		else {
    			return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1));
    		}
    	}
    	return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1, RegExp.$4, RegExp.$5, RegExp.$6));
    }
    (potrebbe) funzionare.
    sostituisci la function str2dt con quella sopra
    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  5. #5
    Il problema persiste, continua a darmi l'alert invalid datetime format.
    Se sai come fare vorrei escluderlo completamente in modo da usare solo il mio controllo del form.
    Grazie Zappa

  6. #6
    Originariamente inviato da Ramboexp
    Il problema persiste, continua a darmi l'alert invalid datetime format.
    Se sai come fare vorrei escluderlo completamente in modo da usare solo il mio controllo del form.
    Grazie Zappa
    mmmh
    Non &egrave; che puoi pubblicare la pagina, o, se lo &egrave; gi&agrave; (pubblica) darci il link?
    a mio avviso doveva funzionare!

    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  7. #7
    http://www.global-groove.eu/dettaglio.asp

    questa pagina l'ho riscritta mettendo parte della pagina originale visto che tale pagina fa parte di una sezione protetta di un altro sito.
    l'errore persiste ma sparisce se metto ora/minuto/secondo cioè il formato completo gg/mm/aaaa hh:mm:ss .
    Io opterei per rimuoverlo visto che il controllo del form funziona benissimo così tagliamo la testa al toro.
    Grazie

  8. #8
    La data ritornata dal calendar ha un blank a destra ...
    funzione che ne tiene conto e che la fa passare anche senza il blank a destra:
    codice:
    function str2dt (str_datetime) {
    	var re_datetime = /^(\d+)\/(\d+)\/(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
    	var re_date = /^(\d+)\/(\d+)\/(\d+)\s*$/;
    	if (!re_datetime.exec(str_datetime)) {
    		if (!re_date.exec(str_datetime)) {
    			return alert("Invalid Datetime format: "+ str_datetime);
    		}
    		else {
    			return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1));
    		}
    	}
    	return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1, RegExp.$4, RegExp.$5, RegExp.$6));
    }
    aggiunto in rosso il check per il blank

    adesso funziona
    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  9. #9
    Grazie Zappa,
    come al solito la community aiuta.
    Adesso funziona benissimo.
    Ovviamente lo script per chi lo volesse anche modificato me lo può richiedere tramite questo post del forum.
    Grazie di nuovo

  10. #10
    bene ...

    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

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 © 2026 vBulletin Solutions, Inc. All rights reserved.