Newsgroup: it.comp.lang.javascript
Titolo: Qualcuno mi può aiutare

Ciao a tutti, premetto che sono alle prime armi con javscript.
Ho questo tipo di problema:
ho un form nel quale inserisco attraverso un caledario due date, una di
inizio ricerca e una di fine ricerca e vorrei controllare che la data di
fine ricerca non sia antecedente a quella di inzio ricerca. Allora, il
codice che qui riporto funziona quasi correttamente, ma ho dei problemi
con alcune date...ad esempio se inserisco come data di inizio 2007-9-20 e
come data di fine 2007-9-19 non mi da il messaggio di errore che invece
dovrebbe comparire, visto che il 19 è minore di 20.
Grazie in anticipo!!!!!
function esegui_postp_giornaliero()
{
 
	if (document.getElementById("data_i").value == 'aaaa-mm-gg')
	{
		alert("Impossibile effettuare la ricerca. Immetti la data di INIZIO
ricerca nel formato corretto!!!");
		return;
	}
if (document.getElementById("data_f").value == 'aaaa-mm-gg')
	{
		alert("Impossibile effettuare la ricerca. Immetti la data di INIZIO
ricerca nel formato corretto!!!");
		return;
	}
 
 var giorno = document.modulo.data_i.value.substring(8,10); 
    var mese = document.modulo.data_i.value.substring(5,7);
    var anno = document.modulo.data_i.value.substring(0,4);
 
 
 
    if (((document.modulo.data_f.value.substring(8,10) < giorno) && 
                 (document.modulo.data_f.value.substring(5,7) == mese) && 
                 (document.modulo.data_f.value.substring(0,4) == anno))
                 ||((document.modulo.data_f.value.substring(5,7) < mese)
&& 
                 (document.modulo.data_f.value.substring(0,4) == anno))) { 
           alert("La data di FINE ricerca è antecedente alla data INIZIO
ricerca.n Prego immettere la data nel formato corretto!!!!!"); 
           return false;
        } 
 
        if
         (((document.modulo.postp_data_f.value.substring(8,10) == giorno)
&& 
           (document.modulo.postp_data_f.value.substring(5,7) == mese) && 
           (document.modulo.postp_data_f.value.substring(0,4) == anno))) { 
           alert("La data di FINE e quella di INIZIO ricerca coincidono.n
Non è possibile estrarre dati per una sola giornata!!!!!"); 
           return false;
        } 
 
 
        f
         (((document.modulo.postp_data_f.value.substring(8,10) > giorno)
&& 
           (document.modulo.postp_data_f.value.substring(5,7) == mese) && 
           (document.modulo.postp_data_f.value.substring(0,4) == anno))
        ||((document.modulo.postp_data_f.value.substring(5,7) > mese) && 
           (document.modulo.postp_data_f.value.substring(0,4) == anno))
        ||((document.modulo.postp_data_f.value.substring(8,10) == giorno)
&& 
           (document.modulo.postp_data_f.value.substring(5,7) == mese) && 
           (document.modulo.postp_data_f.value.substring(0,4) == anno))) {
           document.modulo.submit();
        } 
}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 dovrebbe comparire, visto che il 19 è minore di 20.
[CUT]
ti consiglio vivamente di evitare tutti questi confronti "manuali" ma di
trasformarlo in data e verificare la differenza...
prototipo:
 var dataIni=new Date(anno,mese,giorno);
 var dataEnd=new Date(annofinale,mesefinale,giornofinale)
 var MsDiDifferenza=dataEnd.getTime()-dataIni.getTime();
 //se MsDiDifferenza<0: la data finale è antecedente di quella iniziale
Approfondimenti:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Predefined_Core_Objects:Date_Object
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Date:getTime
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

Grazie!!!
Ho provato a fare come mi hai detto, ma adesso non viene effettuato nessun
controllo. Forse sono io che dormo.. 
Allego il nuovo codice
var giorno = document.modulo.postp_data_i.value.substring(8,10); 
    var mese = document.modulo.postp_data_i.value.substring(5,7);
    var anno = document.modulo.postp_data_i.value.substring(0,4);
 
    var giornofinale = document.modulo.postp_data_f.value.substring(8,10); 
    var mesefinale = document.modulo.postp_data_f.value.substring(5,7);
    var annofinale = document.modulo.postp_data_f.value.substring(0,4);
 
 
 
    var dataIni=new Date(anno,mese,giorno);
    var dataEnd=new Date(annofinale,mesefinale,giornofinale)
    var MsDiDifferenza=dataEnd.getTime()- dataIni.getTime();
if (MsDiDifferenza<0)      
 
        { 
           alert("La data di FINE ricerca è antecedente alla data INIZIO
ricerca.n Prego immettere la data nel formato corretto!!!!!"); 
           return false;
        } 
 
 
        if (MsDiDifferenza==0) 
          { 
           alert("La data di FINE ricerca è uguale alla data INIZIO
ricerca.nNon è possibile  effettuare una statistica  per una  sola
ngiornata!!!!!"); 
           return false;
        } 
 
Cristiano Larghi ha scritto:




-- 
questo articolo e` stato inviato via web dal servizio gratuito 


     var MsDiDifferenza=dataEnd.getTime()- dataIni.getTime();
alert(MsDiDifferenza)?
la console errori javascript di firefox cosa dice?
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 la console errori javascript di firefox cosa dice?
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 tutti gli alert mi danno NaN...io purtroppo non so cosa voglia dire
e un alert di questi valori:
 var giorno = document.modulo.postp_data_i.value.substring(8,10); 
    var mese = document.modulo.postp_data_i.value.substring(5,7);
    var anno = document.modulo.postp_data_i.value.substring(0,4);
che ti dice? (NaN sulle date vorrà dire che uno dei 3 ha un valore non
valido...)
attenzione: mese va da 0 a 11 (quindi devi sottrarre 1 al mese). però
l'errore non sta qua.
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 l'errore non sta qua.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 l'errore non sta qua.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 cioč se inserisco come giorno 29, nell'alert mi mette 9
quindi dovrai "Indietreggiare" di un carattere, no?
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:substring
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.


http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:substring
-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 - see 00index.htm
 Dates - miscdate.htm moredate.htm js-dates.htm pas-time.htm critdate.htm etc.