http://qs321.pair.com?node_id=892037


in reply to How to get unselected radio_group() items after submitting form

You could add a Default button that would restore your radio group to default values when clicked.

print $query->defaults('Restore to Default');
  • Comment on Re: How to get unselected radio_group() items after submitting form
  • Download Code

Replies are listed 'Best First'.
Re^2: How to get unselected radio_group() items after submitting form
by slugger415 (Monk) on Mar 08, 2011 at 17:45 UTC
    Hm, not quite what I was looking for -- that removes the saved selections as well. To clarify, here's my initial view:
    label 1: ( )c ( )r ( )t ( )s label 2: ( )c ( )r ( )t ( )s label 3: ( )c ( )r ( )t ( )s label 4: ( )c ( )r ( )t ( )s label 5: ( )c ( )r ( )t ( )s
    A user makes selections on the first three:
    label 1: (x)c ( )r ( )t ( )s label 2: ( )c (x)r ( )t ( )s label 3: ( )c (x)r ( )t ( )s label 4: ( )c ( )r ( )t ( )s label 5: ( )c ( )r ( )t ( )s
    They click submit, and this appears:
    label 1: (x)c ( )r ( )t ( )s label 2: ( )c (x)r ( )t ( )s label 3: ( )c (x)r ( )t ( )s label 4: (x)c ( )r ( )t ( )s label 5: (x)c ( )r ( )t ( )s

    Note that 4 and 5 now have c selected.

    If I use print $query->defaults('Restore to Default');, it removes all selections from all rows.

    What I want it is to look like view #2 above, after clicking submit:

    label 1: (x)c ( )r ( )t ( )s label 2: ( )c (x)r ( )t ( )s label 3: ( )c (x)r ( )t ( )s label 4: ( )c ( )r ( )t ( )s label 5: ( )c ( )r ( )t ( )s
    thanks, Scott

      Ah. Thanks for the sample. Also, thanks to Wind for narrowing the issue to the start_form/end_form because I was not able to replicate the problem before using <form>.

      Anyway, here is my new solution:
      I updated file name to $f to match original sample.

      if ($which_radio_button eq q{}) { $query->delete("$f"); }

      see sample:

      #!/usr/bin/perl -w use CGI; use strict; my $query = CGI->new; print $query->header; my $button = $query->param('submit'); my @fs = ('test1.txt', 'test2.txt', 'test3.txt', 'test4.txt'); if ($button eq "save") { foreach my $f (@fs) { my $which_radio_button = $query->param("$f"); print "for $f you selected $which_radio_button<BR>\n"; if ($which_radio_button eq q{}) { $query->delete($f); } } #$query->delete_all(); } print "<html><body>"; print $query->start_form(); #print $query->defaults('Restore to Defaults'); foreach my $f (@fs) { print $query->radio_group(-name=>$f, -value=>['c','r','t','s'], -default=>'-'); print "<BR>"; } print $query->defaults('Return to default'); print $query->submit(-name=>'submit',-value=>'save'); print $query->end_form(); print "</body></html>";

      If you add $query->delete($f); where $f is empty you will achieve your desired result, as shown in the above example.