Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]2341[/thread]

Datumsauswahl: Suche DHTML/AJAX Eingabefeld



<< >> 2 Einträge, 1 Seite
Ronnie
 2007-04-07 12:13
#25128 #25128
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hallo miteinander,

ich suche ein DHTML/AJAX Widget für die Eingabe eines Datums in eine Eingabefeld. Wenn JS deaktiviert ist, soll also immer noch die Möglichkeit bstehen das Datum im Format dd.mm.jjjj einzugeben. Hat von euch jemand schon mal irgendwo etwas passendes gesehen/verwendet?

Gruß,
Ronnie
Ronnie
 2007-04-07 14:32
#25129 #25129
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Ich habe mich jetzt erstmal für eine "klassische" Variante entschieden.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/perl

use strict;
use warnings;

package Widget::Date;
use Moose;
use Date::Calc qw/check_date Today/;

has 'day' => ( is => 'rw' );
has 'month' => ( is => 'rw' );
has 'year' => ( is => 'rw' );
has 'name' => ( is => 'rw' );

sub set_today {
my $self = shift;
($self->{'year'}, $self->{'month'}, $self->{'day'}) = Today;
}

sub is_valid {
my $self = shift;
return check_date($self->year, $self->month, $self->day);
}

sub as_text {
my $self = shift;
return $self->day . '.' . $self->month . '.' . $self->year;
}

sub from_cgi {
my $self = shift;
my $q = shift;
die 'Widget::Date->from_cgi_query needs a CGI-object!'
unless ref $q eq 'CGI';
$self->day($q->param($self->name . '_d'));
$self->month($q->param($self->name . '_m'));
$self->year($q->param($self->name . '_y'));
}

sub as_form {
my $self = shift;
my $o = '<select name="' . $self->name . '_d">' . "\n";
$o .= ($_ == $self->day) ?
'<option selected>' . $_ . '</option>' . "\n" :
'<option>' . $_ . '</option>' . "\n" for 1 .. 31;
$o .= '</select>' . "\n" . "&nbsp;" . "\n";

$o .= '<select name="' . $self->name . '_m">' . "\n";
$o .= ($_ == $self->month) ?
'<option selected>' . $_ . '</option>' . "\n" :
'<option>' . $_ . '</option>' . "\n" for 1 .. 12;
$o .= '</select>' . "\n" . "&nbsp;" . "\n";

$o .= '<select name="' . $self->name . '_y">' . "\n";
$o .= ($_ == $self->year) ?
'<option selected>' . $_ . '</option>' . "\n" :
'<option>' . $_ . '</option>' . "\n" for 2007 .. 2020;
$o .= '</select>' . "\n" . "&nbsp;" . "\n";
return $o;
}

1;

und ein Beispiel-Skript für die Verwendung:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/perl

use strict;
use warnings;

use CGI;
use CGI::Carp qw/warningsToBrowser fatalsToBrowser/;
use Data::Dumper;

use Widget::Date;

my $q = CGI->new;
my $wdgt = Widget::Date->new(name => 'date');
my $message = '';

if ($q->param('action') eq 'submit') {
$wdgt->from_cgi($q);
$message = "invalid date!" unless $wdgt->is_valid;

} else {
$wdgt->set_today;
}

print $q->header, $q->start_html, $q->h1($wdgt->as_text), $q->h2($message),
$q->start_form, $wdgt->as_form,
$q->submit(-name => "action", -value => "submit"),
$q->end_form, $q->end_html;

Was DHTML/AJAX betrifft, scheint mir YUI -> http://developer.yahoo.com/yui/ sehr interessant zu sein. Dort gibt es auch Calender-Widget, mit dem ich mich mal noch näher beschäftigen werde.
<< >> 2 Einträge, 1 Seite



View all threads created 2007-04-07 12:13.