Newsgroup: it.comp.lang.javascript
Titolo: Problema con Date/Time picker prototype

Buongiorno a tutti,
sto provando ad utilizzare questo date/timepicker:
http://home.jongsma.org/software/js/datepicker
ma sbaglio qualcosa, dato che non mi funziona.
Premesso che sono abbastanza nuovo alla tecnologia ajax, ecco quanto fatto:
Ho scaricato i file presenti nella sezione download e li ho inclusi
nella mia pagina di test, unitamente all'ultima versione di prototype,
ho incluso il codice presente nel link sopracitato (spulciando l'html)
ovvero:
<div style="float:left; width:400px;">Date only:</div>
 <input class="datepicker" />
<div style="float:left; width:400px;">Time only:</div>
 <input class="timepicker" />
Ma i componenti non funzionano.
Ho tralasciato il 'contructor' perchè non riesco a capire come
utilizzarlo, va inserito inline o devo creare un file js apposito ?
Grazie per la pazienza,
YUS

 utilizzarlo, va inserito inline o devo creare un file js apposito ?
inline o .js è la stessa cosa ... immagino che ci voglia per forza una 
chiamata a qualcosa per farlo funzionare.

 chiamata a qualcosa per farlo funzionare.
Per caso hai dato un'occhiata al link ?
Lo sviluppatore da per scontato qualcosa che per un newbye come me
probabilmente non lo è, descrive il costruttore ma non come utilizzarlo,
e nella pagina demo non trovo il costruttore inline, probabilmente è
incluso in qualche file .js
Idee ?
Grazie mille
YUS

 costruttore inline, probabilmente è incluso in qualche file .js
Ma hai messo quello che dice,
var picker = new Control.DatePicker("datepicker",
{icon:'path_della_icona_del_calendario'});
?

 ?
Si, mettendo questo fra i tag script non funziona.
Funziona se metto questo:
--codice--
<script language="javascript">	
	var rules = {
		'input.datepicker_start': function(elt) {
			new Control.DatePicker(elt, { icon: 'js2/calendar.png' });
		},
	};
	Behaviour.register(rules);
</script>
--/codice--
e devo includere anche il fiel behaviour.js, del quale farei voelntieri
a meno dato che è inutile allo scopo, però c'è quel
behaviour.register(rules)
che mi pare abbia la funziona di 'attivare' le chiamate che ho messo in
'rules'.
Potrei farne senza ?
Se metto solo:
'input.datepicker_start': function(elt) {
			new Control.DatePicker(elt, { icon: 'js2/calendar.png' });
		},
Mi dice invalid label 'input.datepicker_start' nella console degli errori.
Come vedi.. ci capisco poco pure di JS, nonostante lo trovi molto valido.
Grazie mille
YUS

 Si, mettendo questo fra i tag script non funziona.
L'unico problema che vedo, senza analizzare il codice, è che riceve come 
primo parametro un elemento (nella documentazione parla invece di classe).
Ho provato al volo questo e funziona perfettamente; dovrai usare prototype 
per identificare gli oggetti "datepicker" (io ho usato il DOM, dato che 
non conosco prototype):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
  <head>
  <meta http-equiv="content-type" content="text/html;
charset=windows-1250">
  <title>Test</title>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="prototype-base-extensions.js"></
script>
<script type="text/javascript" src="prototype-date-extensions.js"></
script>
<script type="text/javascript" src="datepicker.js"></script>
<link rel="stylesheet" href="datepicker.css"></link>
<script type="text/javascript">
</script>
 </head>
  <body>
<div style="float:left; width:400px;">Date only:</div>
 <input class="datepicker" id="datepicker" />
</div>
<script type="text/javascript">
var picker = new Control.DatePicker(document.getElementById("datepicker"),
{'icon':'calendar.png'}); 
</script>
</body>
</html>

 </script>
Ok, funziona anche a me così e ti ringrazio, mi va benissimo usare il DOM.
Solo una domanda, perché se prima chiamo la classe e poi metto lo script
funziona, se invece metto lo script all'inizio del file e poi chiamo la
classe non funge ?
Di nuovo,
YUS

 classe non funge ?
Nel mio esempio è al contrario di quello che dici (prima includo lo 
script, poi istanzio la classe).
Anche perché come dici te (prima istanzio la classe e poi includo lo 
script) non può funzionare, dato che non può sapere cosa sia l'oggetto 
"Control.DatePicker" ...


Non sono stato spiegato perdonami.
Funziona se:
1) Includo lo script
2) Posiziono l'elemento <input class="datepicker" id="datepicker" />
3) Includo il codice "var picker = new
Control.DatePicker(document.getElementById("datepicker")"
Se inverto il 2 con il 3 non funziona, è solamente perché non trova
l'elemento del DOM, in quanto sequenzialmente viene dopo o c'è qualche
altro motivo ?
Grazie
YUS

 altro motivo ?
la prima che hai detto: se non esiste l'oggetto come fa?
Puoi sempre mettere l'istanza dell'oggetto onload, così puoi scriverlo 
dove vuoi:
window.onload=function() {
	var picker ...
}

 }
Gentile ed esaustivo come sempre!
Grazie mille per la chiacchierata!
=)
YUS