Newsgroup: it.comp.lang.javascript
Titolo: controllo date form aiuto urgente

Salve sto facendo un sito ma essendo molto scarso in materia ho urgente
bisogno di una mano;
Ho un semplice form composto da 2 campi testo"DATA INIZIO" e "DATA FINE" e 1
pulsante di invio , l'utente deve inserire in "DATA INIZIO" la data iniziale
della ricerca ,in "DATA FINE" la data finale della ricerca, premendo "INVIA"
passo i valori delle due data alla pagina "SELEZIONE.ASP" che visualizza i
records compresi nel periodo.
Avrei bisogno che premendo "INVIA" si proceda al controllo dei due campi:
1) se l'utente ha inserito i due valori
2) se i 2 valori inseriti sono date corrette e nel formato gg/mm/aaa
e nel caso di errore si avverta l'utente dell'errore e non si proceda a
passare i dati.
Inoltre vorrei sapere se è possibile impostare una data predefinita in "DATA
FINE" ad esempio Date() che comunque possa sempre essere cambiata
dall'utente.
grazie per risposta
Stefano
--------------------------------
Inviato via 
http://usenet.libero.it

 dall'utente.
Visto che puoi lavorare lato server fai tutto da li, ed evita JavaScript, 
tanto i controlli server-side dovresti farli comunque.
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

 2) se i 2 valori inseriti sono date corrette...
<body bgcolor="#FFFFFF" onload="inserisci_data()">
<script language="JavaScript">
function controlla_date(thisform) {
 var d1 = thisform.inizio.value.split("/");
 var d2 = thisform.fine.value.split("/");
 var date1 = new Date(d1[2], d1[1] - 1, d1[0]);
 var date2 = new Date(d2[2], d2[1] - 1, d2[0]);
 if (date1.getDate() != d1[0] || date2.getDate() != d2[0] || date1 > date2)
  return false;
 return true;
}
function inserisci_data() {
 var d = new Date();
 var g = d.getDate();
 var m = d.getMonth();
 var y = d.getFullYear();
 g = ((g < 10) ? "0" : "") + g;
 m = ((m < 10) ? "0" : "") + m;
 document.myform.fine.value = g + "/"+ m + "/" + y;
}
</script>
<form name="myform" action="quellochevuoi.asp" onsubmit="return
controlla_date(this)">
  <table width="10%" border="0" cellspacing="0" cellpadding="4">
    <tr>
      <td>Inizio: </td>
      <td>
        <input type="text" name="inizio">
      </td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>Fine:</td>
      <td>
        <input type="text" name="fine">
      </td>
      <td>
        <input type="submit" name="Submit" value="Invia">
      </td>
    </tr>
  </table>
</form>
Maurizio.

Maurizio ti ringrazio lo script è quello che cercavo, abuso della tua
cortesia e ti chiedo dove devo mettere gli allarm di avviso per comunicare
all'utente che ha inserito una data errata.
grazie per risposta
stefano


 errata.
All'interno della funzione controlla_date():
    if (date1.getDate() != d1[0] || date2.getDate() != d2[0] || date1 >
date2) {
        alert("La data è sbagliata\n\nRiprova!");
        return false;
    }
Maurizio.

 tanto i controlli server-side dovresti farli comunque.
Riccardo, non si fa cosi'! :P
.. A parte che si tenta sempre di ridurre le chiamate al server al 
minimo indispensabile (e Javascript, con i suoi controlli sui campi 
delle form, serve proprio a questo); ma al di la' di tutto cio', hai 
fatto un quote terrifico! :)
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"Quanti angeli danzano sulla punta di uno spillo?"

 delle form, serve proprio a questo);
Nego: il client può supportare diverse versioni di javascript oppure non
supportarlo affatto
E' cattiva programmazione non fare controlli lato server
La nuova piattaforma .net di Microsoft lavora proprio su questo concetto: ti
permette di creare degli script javascript in modo estremamente veloce per
effettuare controlli lato client, ma sottolinea dappertutto che occorre
sempre effettuare anche il controllo lato server
Io personalmente lavoro in entrambi "i lati": script lato client, se sembra
tutto ok passo al server che riverifica i dati, se tutto ok esegue query
nell'mdb e altro
Se si sceglie di effettuare solo uno dei 2 controlli meglio farlo lato
server anziché solo lato client
Il tutto ovviamente collegato a un sito end-user (in una Intranet hai il
controllo dei browser)

 occorre sempre effettuare anche il controllo lato server
Come spero di essermi spiegato, non ho mai detto il contrario, anzi. :)
Non era un'esclusione la mia.
Riccardo aveva proposto l'uso dei soli check lato server, visto che tanto
andavano cmq fatti.. Io ho semplicemente detto che e' meglio cercare di
ridurre le chiamate al server, usando i controlli client-side. Ma non mi par
di aver mai detto di voler eliminare i controlli server-side.


Ok, avevo interpretato male

 ma al di la' di tutto cio', hai fatto un quote terrifico! :)
Credo che "le righe necessarie a consentire di seguire il filo logico" 
sia un concetto che si presta ad interpretazioni personali, secondo me 
non era male lasciar tutto.
. . . mo' non cominciamo un botta/risposta eh? ^_^
