Entwicklung - Javascript/Ajax - Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1

Javascript/Ajax: Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1

manu (39)

manu

03.09.2002 23:07

Aachen

  • 844 Postings, noch 6 bis zum nächsten Level (850)

Postings: 844

Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1

Mittwoch, 11. Juni 2008 21:28

  • 6.0/6 Votes: 1
6.0/6 Votes: 1
Seit einiger Zeit benutze ich für verschiedene Projekte den Datepicker von Sven Wappler, der wiederum auf dem Datepicker von Eulerian Studios fußt.

Sinn eines Datepickers ist es, statt zu einer manuellen Datumseingabe aufzufordern einen Kalender anzuzeigen, über den man sein Datum per Klick wählen kann.

Der Datepicker von Sven ist ein wenig hübscher und besser im Handling als das Original, allerdings ist er nicht mit der aktuellen Prototype- bzw. Scriptaculous-Version (1.6.0.1 bzw. 1.8.1) kompatibel, so dass ich die im Moment aktuelle Version von Eulerian folgendermaßen angepaßt habe:



Der Datepicker ist unobtrusive (unaufdringlich,dezent), was bedeutet, dass die entsprechende Funktionalität erst nach dem Laden des Dokuments (onload) dynamisch hinzugefügt wird (sofern Javascript akiviert ist).

Das Einbinden ist recht trivial:
Im <head> der Webseite werden die Javascript-Dateien von Prototype, Scriptaculous und dem Datepicker eingebunden; dazu kommt noch die datepicker.css.

HTML4STRICT: (Auswählen)<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js"></script>
<script type="text/javascript" src="js/datepicker.js"></script>

<link href="css/datepicker.css" rel="stylesheet" type="text/css" />


Im <body> folgt dann das Input-Feld, an das der Datepicker gehangen wird:

HTML4STRICT: (Auswählen)<input type="text" id="date" name="date" class="date" />

Mit diesem kurzen Javascript-Schnipsel wird nun an das Element mit der ID date der Datepicker gehangen:

HTML4STRICT: (Auswählen)<script type="text/javascript">
    /*<[CDATA[*/
    var datepicker    = new DatePicker({
    relative    : 'date',
    language    : 'de'
    });
    /*]]>
*/
</script>


Möchte man mehrere Datepicker einbinden, würde der Code zum Einbinden schnell unübersichtlich, daher empfiehlt sich dieser kleine Javascript-Schnipsel, der alle Objekte mit dem Datepicker versieht, die die css-Klasse 'date' haben (Man sollte natürlich allen Objekten eindeutige IDs zuweisen):

JAVASCRIPT: (Auswählen)function initDatepickers() {
    $$("*").findAll(function(node) {
        return Element.hasClassName(node,'date');
    }).each(function(node) {
        datepickers[node.id] = new DatePicker({
            relative             : node.id,
            language             : 'de',
            enableCloseEffect : false,
            enableShowEffect     : true,
            closeEffect            : 'squish',
            showEffect            : 'appear'
        });
        datepickers[node.id].setDateFormat([ "dd", "mm", "yyyy" ], ".");
    });
}
Event.observe(window, 'load', initDatepickers, false);


Diese Funktion befindet sich neben Prototype 1.6.0.1, Scriptaculous 1.8.1, der datepicker.js, der datepicker.css den Grafiken und der Beispiel-Datei (index.html) im Download-Paket als datepicker.init.js und kann im <head> der Seite geladen werden.

Hier steht der Datepicker zum Download bereit:


Vielen Dank an Sven und die Eulerian Studios!
Signatur:Si tacuisses, philosophus manisses.

sgruendel

sgruendel

31.07.2008 09:51

Eisingen

  • 1 Postings, noch 49 bis zum nächsten Level (50)

Postings: 1

Re: Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1 (@manu)

Donnerstag, 31. Juli 2008 10:14

Hi,

vielen Dank, genau das habe ich gesucht.  Ich habe noch einen Fehler bei den Sprachen festgestellt: Spanisch ist als 'sp' hinterlegt, der ISO-Code ist aber 'es'.  Einfach die drei Array-Indizes in datepicker.js entsprechend korrigieren, dann geht's!


Viele Grüße,
Stefan

manu (39)

manu

03.09.2002 23:07

Aachen

  • 844 Postings, noch 6 bis zum nächsten Level (850)

Postings: 844

Re: Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1 (@sgruendel)

Donnerstag, 31. Juli 2008 10:35

Hallo Stefan,

danke für den Hinweis, spanisch hatte ich noch nicht gecheckt...
Signatur:Si tacuisses, philosophus manisses.

JBassen (20)

JBassen

30.07.2009 16:22

  • 3 Postings, noch 47 bis zum nächsten Level (50)

Postings: 3

Re: Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1 (@manu)

Donnerstag, 30. Juli 2009 16:32

Hi manu,

bin grade über den Datepicker gestoplert. Super Sache!
Leider ist mir beim Testen und Ausprobieren aufgefallen, dass der Datepicker im IE8 nicht mehr richtig dargestellt wird.

Vielleicht könntest du eine überarbeitete Version online stellen?

Viele Grüße!

manu (39)

manu

03.09.2002 23:07

Aachen

  • 844 Postings, noch 6 bis zum nächsten Level (850)

Postings: 844

Re: Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1 (@JBassen)

Donnerstag, 30. Juli 2009 17:26

Hallo JBassen,

wow, erst 9 und schon mit dem Prototpe-Frmework beschäftigt? *scnr*
Das dürfte von einem Bug in Prototype selbst her rühren. Ich habe hier was gefunden.

Installiere doch mal die aktuellste Prototype-Version und poste mal, obs damit funktioniert...

Gruß,
Manu
Signatur:Si tacuisses, philosophus manisses.

JBassen (20)

JBassen

30.07.2009 16:22

  • 3 Postings, noch 47 bis zum nächsten Level (50)

Postings: 3

Re: Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1 (@manu)

Freitag, 31. Juli 2009 10:12

Hey manu,

nene.. Bin schon ein paar Jahre älter. Hatte mich bislang nur noch nicht ums Profil gekümmert.

Ich habe die aktuellste Version vom Prototype heruntergeladen und eingebuden. Das Resultat ist leider unverändert. Das Problem tritt auch nur im IE8, wenn ich diesen in der Kompatibilitätsansicht laufen lasse funktioniert es wunderbar. Den Link, den du gepostet hast, verstehe ich leider nicht so ganz..

Desweiteren stellt sich mir die Frage, ob es irgendwie mölich ist das nur ein bestimmter Zeitraum im Kalender ausgewählt werden kann. Dafür gibts zZ noch keine Möglichkeit oder?

Gruß
Editiert:Freitag, 31. Juli 2009 10:15

manu (39)

manu

03.09.2002 23:07

Aachen

  • 844 Postings, noch 6 bis zum nächsten Level (850)

Postings: 844

Re: Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1 (@JBassen)

Freitag, 31. Juli 2009 10:25

Morgen,


ja, war nicht so ganz ernst zu nehmen...

Ich hab leider gerade nicht so viel Zeit, mich mit Protoype auseinander zu setzen - daher würde ich vorschlagen, solange einfach den IE8 in den Zwangs-Kompatibilitätsmodus zu setzen. Für den IE8 gibt es dafür extra ein Meta-Tag:
HTML4STRICT: (Auswählen)<meta http-equiv="X-UA-Compatible" content="IE=7" />
Zu Deiner zweiten Frage: ich habe dazu in einem Projekt einfach 2 Datepicker eingebunden: Start- und Enddatum... Vll. kommt das ja auch für Dich in Frage.

Gruß,
Manu

Signatur:Si tacuisses, philosophus manisses.

JBassen (20)

JBassen

30.07.2009 16:22

  • 3 Postings, noch 47 bis zum nächsten Level (50)

Postings: 3

Re: Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1 (@manu)

Freitag, 31. Juli 2009 14:24

Ok, werde dann vorrübergehend den Kompatibilitätsmodus erzwigen. Wäre super, wenn du bei Gelegenheit trotzdem nochmal drüber schauen könntest und es vllt. kompatibel machst ;)..

Mit 2 Datepickern klappt das leider nicht. Ich habe zwei Datumswerte die ich an den Kalender übergeben würde. Der Kalender soll dann alle Tage zwischen den beiden Werten zulassen und alle anderen Tage deaktivieren, bzw. nicht auswählbar machen..

Gruß Jan

manu (39)

manu

03.09.2002 23:07

Aachen

  • 844 Postings, noch 6 bis zum nächsten Level (850)

Postings: 844

Re: Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1 (@JBassen)

Freitag, 31. Juli 2009 15:26

Ich werds mir mal anschauen, aber kann im Moment noch nichts versprechen...

Aber eine interessante Aufgabenstellung
Ich hoffe, davon zu hören ;D

Gruß,
Manu
Signatur:Si tacuisses, philosophus manisses.

ndorphin

ndorphin

29.08.2009 02:30

  • 1 Postings, noch 49 bis zum nächsten Level (50)

Postings: 1

Re: Datepicker mit Prototype 1.6.0.1 und Scriptaculous 1.8.1 (@manu)

Samstag, 29. August 2009 02:37

Für das Dartsellungsproblem im IE8 gibts folgenden Workaround (vielleicht gehts auch noch anders):

Folgende Funktion erstellen, z.B. in der datepicker.js oder sonstwo in einer eingebunden JS-Datei:

function msieversion()
{
   var ua = window.navigator.userAgent
   var msie = ua.indexOf ( "MSIE " )
   if ( msie > 0 )      // If Internet Explorer, return version number
      return parseInt (ua.substring (msie+5, ua.indexOf (".", msie )))
   else                 // If another browser, return 0
      return 0
}

folgenden Code in der datepicker.js Datei suchen und ändern (Änderung fett markiert):

    /* hack for buggy form elements layering in IE */
    _wrap_in_iframe : function ( content ) {
        return    ( Prototype.Browser.IE && msieversion() < 8) ? " ....
Editiert:Samstag, 29. August 2009 02:43
Bookmark setzen!:Zu Google Bookmark hinzufügen.Zu bloglines hinzufügen.Zu Newsgator hinzufügen.Zu FURL hinzufügen.Zu DIGG hinzufügen.Zu Webnews hinzufügen.Zu Netscape hinzufügen.Zu Yahoo MyWeb hinzufügen.Zu spurl.net hinzufügen.Zu diigo hinzufügen.Zu Newsvine hinzufügen.Zu del.icio.us hinzufügen.Zu SIMPIFY hinzufügen.Zu Mister Wong hinzufügen.Zu Linkarena hinzufügen.Zu isio.de hinzufügen.Zu Oneview hinzufügen.Zu yigg.de hinzufügen.Zu reddit hinzufügen.Zu StumbleUpon hinzufügen.Zu Slashdot hinzufügen.Zu Blinklist hinzufügen.Zu Technorati hinzufügen.Zu Blogmarks hinzufügen.Zu Blinkbits hinzufügen.Zu ma.gnolia hinzufügen.Zu smarking.com hinzufügen.Zu Netvouz hinzufügen.Zu co.mments hinzufügen.Zu Connotea hinzufügen.Zu de.lirio.us hinzufügen.

Specials

Bytefresser Specials: Anno 1404

Benutzer-Counter

Besucher gesamt: 720.239
Besucher heute: 68
Besucher gestern: 99
Max. Besucher/Tag: 495
Gerade online: 5
Max. online: 27
Seiten gesamt: 1.551.180
Aufrufe diese Seite: 5.726

Umfrage

Windows 7 - Fluch oder Segen?

(303 Stimmen)

1. Segen! Ich warte schon lange darauf!
2. Mein Vista reicht mir
3. Keine Experimente, ich bleibe bei XP
4. Pah, Microsoft! Ich bleib bei Apple
5. Iih, Microsoft, ich bleib bei Linux

Tag-Cloud

  scriptaculous     entwicklung     einbinden     studios     kompatibilit     kalender     prototype     august     javascript     aachen     element     @sgruendel     funktion     @jbassen     @manu     auswählen     donnerstag     editiert     postings     version     eulerian     signatur     html4strict     datepicker     freitag     moment     level     stefan     samstag     bytefresser