diff --git a/lib/HTML/StickyForm.pm b/lib/HTML/StickyForm.pm index 06ed043..ac836e9 100644 --- a/lib/HTML/StickyForm.pm +++ b/lib/HTML/StickyForm.pm @@ -345,7 +345,7 @@ sub text{ delete $args->{default}; }else{ $value=delete $args->{default}; - $value=$self->{req}->param($name) if $self->{params}; + $value=$self->{req}->param($name) if $self->_has_sticky_value($name); } _escape($type); @@ -412,7 +412,7 @@ sub textarea{ delete $args->{default}; }else{ $value=delete $args->{default}; - $value=$self->{req}->param($name) if $self->{params}; + $value=$self->{req}->param($name) if $self->_has_sticky_value($name); } _escape($name); @@ -461,7 +461,7 @@ sub checkbox{ }else{ $checked=delete $args->{default}; $value='' unless defined($value); - $checked=grep $_ eq $value,$self->{req}->param($name) if $self->{params}; + $checked=grep $_ eq $value,$self->{req}->param($name) if $self->_has_sticky_value($name); } _escape($name); @@ -537,7 +537,7 @@ sub checkbox_group{ $checked=delete $args->{default}; $checked=[$checked] if ref($checked) ne 'ARRAY'; } - $checked=[$self->{req}->param($name)] if $self->{params}; + $checked=[$self->{req}->param($name)] if $self->_has_sticky_value($name); } my %checked=map +($_,'checked'),@$checked; my $br=delete $args->{linebreak} ? "{well_formed}>" : ''; @@ -665,7 +665,7 @@ sub select{ delete $args->{default}; }else{ $selected=delete $args->{default}; - $selected=[$self->{req}->param($name)] if $self->{params}; + $selected=[$self->{req}->param($name)] if $self->_has_sticky_value($name); } if(!defined $selected){ $selected=[]; } elsif(ref($selected) ne 'ARRAY'){ $selected=[$selected]; } @@ -767,6 +767,17 @@ sub _args{ ($self,$args); } +=item _has_sticky_value($name) + +Return true if there is a provided sticky value. + +=cut + +sub _has_sticky_value($) { + my $self=shift; + ($self->{params} && defined($self->{req}->param($_[0]))); +} + =item _select_options(\@values,\%option_args,\%labels,$values_as_labels) Returns an HTML fragment containing C