Alex, You are a lifesaver!! Have you talked to the people that host Form.pm to have this change implemented?
~Paul On 6/26/07, Alex Malek <[EMAIL PROTECTED]> wrote:
> On 6/26/07, Alex Malek <[EMAIL PROTECTED]> wrote: > > The problem is in HTML::Form.pm > > I had the same issue and I wrote a fix for Form.pm > > I am attaching it. > > > > Let me know if it helps. > > > > ---Alex On 6/26/07, Paul Robbins <[EMAIL PROTECTED]> wrote: > What change did you make? > > The problem is the way Form.pm deals with multiple form select options with the same name. I altered Form.pm to handle that case. What you need to do is either replace Form.pm with the one I sent you or put it in a place in your path where it is used first. Below is the diff of the original Form.pm and and my new version. 153a155,156 > #select/option start code > $attr->{START}="true"; 156c159,164 < last if $tag eq "/select"; --- > if ($tag eq "/select") { > #some select/option end code > $attr->{END}="true"; > $f->push_input("option", $attr); > last; > } 172a181,183 > if ($attr->{START}) { > delete $attr->{START}; #after first use remove > } 188a200,202 > #some select/option end code > $attr->{END}="true"; > $f->push_input("option", $attr); 823c837,851 < return $self->SUPER::add_to_form($form) unless $prev; --- > # for option > if ($type eq "option") { > if ( defined $self->{START}) { > return $self->SUPER::add_to_form($form); > } > my $i=1; > while ($prev && (! defined $prev->{START}) ) { > $prev = $form->find_input($self->{name}, $self->{type}, $i++); > } > if ( defined $prev->{START} && defined $self->{END}) { > delete $prev->{START}; > return; > } > } > return $self->SUPER::add_to_form($form) unless ($prev );