diff -Naur HTML-FillInForm-2.00/lib/HTML/FillInForm.pm HTML-FillInForm-2.00.new/lib/HTML/FillInForm.pm
--- HTML-FillInForm-2.00/lib/HTML/FillInForm.pm 2007-09-11 17:20:01.000000000 -0700
+++ HTML-FillInForm-2.00.new/lib/HTML/FillInForm.pm 2007-11-30 16:36:19.000000000 -0800
@@ -42,6 +42,8 @@
fill_password => 1,
ignore_fields => 1,
disable_fields => 1,
+ invalid_fields => 1,
+ invalid_class => 1,
}
}
@@ -128,6 +130,11 @@
? @{ $option{disable_fields} } : $option{disable_fields} if exists( $option{disable_fields} );
$self->{disable_fields} = \%disable_fields;
+ my %invalid_fields;
+ %invalid_fields = map { $_ => 1 } ( ref $option{'invalid_fields'} eq 'ARRAY' )
+ ? @{ $option{invalid_fields} } : $option{invalid_fields} if exists( $option{invalid_fields} );
+ $self->{invalid_fields} = \%invalid_fields;
+
if (my $fdat = $option{fdat}){
# Copy the structure to prevent side-effects.
my %copy;
@@ -158,6 +165,12 @@
$self->{'target'} = $target;
}
+ if (my $invalid_class = $option{invalid_class}){
+ $self->{'invalid_class'} = $invalid_class;
+ } else {
+ $self->{'invalid_class'} = 'invalid';
+ }
+
if (defined($option{fill_password})){
$self->{fill_password} = $option{fill_password};
} else {
@@ -220,6 +233,23 @@
exists $self->{disable_fields}{ $attr->{'name'} } and
$self->{disable_fields}{ $attr->{'name'} } and
not ( exists $attr->{disable} and $attr->{disable} );
+
+ # Check if we need to invalidate this field
+ my $invalidating = 0;
+ if (exists $attr->{name} and
+ exists $self->{invalid_fields}{ $attr->{name} } and
+ $self->{invalid_fields}{ $attr->{name} }) {
+ $invalidating = 1;
+ if (exists $attr->{class} and length $attr->{class}) {
+ # don't add the class if it's already there
+ unless ($attr->{class} =~ /\b\Q$self->{invalid_class}\E\b/) {
+ $attr->{class} .= " $self->{invalid_class}";
+ }
+ } else {
+ $attr->{class} = $self->{invalid_class};
+ }
+ }
+
if ($tagname eq 'input'){
my $value = exists $attr->{'name'} ? $self->_get_param($attr->{'name'}) : undef;
# force hidden fields to have a value
@@ -336,7 +366,18 @@
$self->{selectMultiple} = 0;
$self->{selectSelected} = 0; # helper var to remember if an option was already selected in the current select tag
}
- $self->{output} .= $origtext;
+
+ # need to re-output the