| HTML-Widget documentation | Contained in the HTML-Widget distribution. |
HTML::Widget::Element::Checkbox - Checkbox Element
my $e = $widget->element( 'Checkbox', 'foo' );
$e->comment('(Required)');
$e->label('Foo');
$e->checked('checked');
$e->value('bar');
Checkbox Element.
If true, overrides the default behaviour, so that after a field is missing from the form submission, the xml output will contain the default value, rather than be empty.
Sebastian Riedel, sri@oook.de
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
| HTML-Widget documentation | Contained in the HTML-Widget distribution. |
package HTML::Widget::Element::Checkbox; use warnings; use strict; use base 'HTML::Widget::Element'; use NEXT; __PACKAGE__->mk_accessors(qw/checked comment label value retain_default/);
sub new { shift->NEXT::new(@_)->value(1); }
sub containerize { my ( $self, $w, $value, $errors, $args ) = @_; $value = ref $value eq 'ARRAY' ? shift @$value : $value; my $name = $self->name; # Search for multiple checkboxes with the same name my $multi = 0; my @elements = $w->find_elements( name => $name ); for my $element (@elements) { next if $element eq $self; if ( $element->isa('HTML::Widget::Element::Checkbox') ) { $multi++; } } # Generate unique id if ($multi) { $w->{_stash} ||= {}; $w->{_stash}->{checkbox} ||= {}; my $num = ++$w->{_stash}->{checkbox}->{$name}; my $id = $self->id( $w, "$name\_$num" ); $self->attributes->{id} ||= $id; } my $checked = ( defined $value && $value eq $self->value ) ? 'checked' : undef; if ( !defined $value && ( $self->retain_default || !$args->{submitted} ) && $self->checked ) { $checked = 'checked'; } $value = $self->value; my $l = $self->mk_label( $w, $self->label, $self->comment, $errors ); my $i = $self->mk_input( $w, { checked => $checked, type => 'checkbox', value => $value }, $errors ); my $e = $self->mk_error( $w, $errors ); return $self->container( { element => $i, error => $e, label => $l } ); }
1;