|
Re: [Checked]: msg#00525web.interchange.users
Victor Nolton <ven@xxxxxxxxxxxxx> writes: > I have 9 <input type="checkbox">'s > By default none are checked. So far so good. > if the user clicks it and submits it, it is fine, if there is a error > the page is displayed and they are given the errors of what they > forgot to fill out. boxes are still checked appropriately. > > IF they unclick one of the 9 boxes (which aren't required) and they > submit if the page is redrawn (cause of errors) the boxes are checked > again. > > Checked the docs used some examples. no luck. I just need it so that > if they uncheck a box it stays unchecked. > > Anyone have any snippets of code? > checked reference http://interchange.redhat.com/cgi-bin/ic/dev/ictags_14.html This is somewhat difficult because only checked boxes are passed by CGI, so the value isn't reset. My formel tag should handle this appropriately. Example: [formel name=Loesung type=radio choices="89.90 DM=89.90 ,99.- DM=99.- ,109.- DM=109.-" format="<TR><TD VALIGN=MIDDLE WIDTH=450 COLSPAN=3><FONT SIZE=1 FACE=Verdana,Arial,Helvetica,sans-serif>%s%s</FONT></TD></TR>"] Ciao Rakce # # UserTag formel - see POD documentation for more information # # Copyright 2000,2001 by Stefan Hornburg (Racke) <racke@xxxxxxxxxx> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA. UserTag formel Order label name type size UserTag formel Version 0.07 UserTag formel addAttr UserTag formel Routine <<EOF sub { my ($label, $name, $type, $size, $opt) = @_; my ($labelhtml, $elhtml, $fmt); my $contrast = $::Variable->{CONTRAST} || 'red'; my $checkfor = $opt->{'checkfor'} || $name; my $sizestr = ''; my $labelproc; $labelproc = sub { my ($label, $keep) = @_; if ($Tag->error({name => $checkfor, keep => $keep})) { if ($opt->{signal}) { sprintf($opt->{signal}, $label); } else { qq{<font color="$contrast">$label</font>}; } } else { $label; } }; # set defaults $type = 'text' unless $type; for ('format', 'order', 'reset', 'signal', 'size') { next if $opt->{$_}; if ($::Values->{"mv_formel_$_"}) { $opt->{$_} = $::Values->{"mv_formel_$_"}; } } if ($opt->{'format'}) { $fmt = $opt->{'format'}; } else { $fmt = '%s %s %s'; } if ($opt->{'size'}) { if ($type eq 'textarea') { my ($cols, $rows) = split (/\s*[,x\s]\s*/, $opt->{'size'}); $sizestr = " rows=$rows cols=$cols"; } else { $sizestr = " size=$opt->{size}"; } } if ($opt->{'maxlength'}) { $sizestr .= " maxlength=$opt->{maxlength}"; } if ($type eq 'radio' || $type eq 'checkbox') { my ($rlabel, $rvalue, $select); for my $button (split (/\s*,\s*/, $opt->{choices})) { $select = ''; if ($button =~ /^(.*?)=(.*)$/) { $rvalue = $1; $rlabel = $2; } else { $rvalue = $rlabel = $button; } if ($::Values->{$name} eq $rvalue) { $select = ' checked'; } $rlabel = &$labelproc($rlabel, 1); $elhtml .= qq{<input type=$type name=$name value="${rvalue}"$select> $rlabel}; } # delete error implicitly &$labelproc(); return sprintf ($fmt, $labelhtml, $elhtml); } $labelhtml = &$labelproc($label); if ($type eq 'select') { my ($rlabel, $rvalue, $select); for my $option (split (/\s*,\s*/, $opt->{choices})) { $select = ''; if ($option =~ /^(.*?)=(.*)$/) { $rvalue = $1; $rlabel = $2; } else { $rvalue = $rlabel = $option; } if ($::Values->{$name} eq $rvalue) { $select = ' selected'; } if ($rvalue eq $rlabel) { $elhtml .= qq{<option $select>$rlabel}; } else { $elhtml .= qq{<option value="$rvalue"$select>$rlabel}; } } return sprintf ($fmt, $labelhtml, qq{<select name=$name>$elhtml</select>}); } if ($opt->{reset}) { if ($type eq 'textarea') { $elhtml = qq{<textarea name="${name}"$sizestr></textarea>}; } else { $elhtml = qq{<input type=$type name="${name}"$sizestr>}; } } else { if ($type eq 'textarea') { $elhtml = qq{<textarea name="${name}"$sizestr>$::Values->{$name}</textarea>}; } else { $elhtml = qq{<input type=$type name=$name value="$::Values->{$name}"$sizestr>}; } } if ($opt->{order}) { # display form element first sprintf ($fmt, $elhtml, $labelhtml, $opt->{help}); } else { # display label first sprintf ($fmt, $labelhtml, $elhtml, $opt->{help}); } } EOF UserTag formel Documentation <<EOD =head2 formel This tag generates a HTML form element. It preserves the user input from the last display of the current page and looks for input value errors (using the C<error> tag). The user-visible description will be displayed in the color defined by the variable C<CONTRAST> or in red if the variable is not set. Parameters for this tag are: =over 4 =item label The user-visible description of the form element's purpose. =item name The name of the form element which appears in the C<NAME> attribute of the HTML tag. =item type The type of the form element (supported are text, textarea, checkbox, radio and select). =item size The width of the form element. For textarea elements you can specify width and height (e.g. 70x10 or 20,4). =back Other options are: =item checkfor The name which get passed to the Error tag. The default is the name of the form element. =item choices Comma-separated list of choices for radio, checkbox and select types. To display labels different from the values, use the C<value1=label1,value2=label2,...> notation. =item format The container format string for the label and the form element. The default is C<%s %s %s>. =item help Help text for this form element. =item maxlength Add attribute C<maxlength> to the input tag. =item order Whether the user-visible description or the form element comes first. Default is the first (order=0). =item reset Discards the user input if set to 1. =item signal Label container in case of errors. The default is <font color="__CONTRAST__">%s</font>. If the variable CONTRAST doesn't exist, the color red is used instead. =back You can set defaults for format, order, reset, signal and size with the corresponding mv_formel_... form variable values, e.g.: [value name="mv_formel_format" set="<TR><TD>%s</TD><TD>%s</TD></TR>" hide=1] [value name="mv_formel_order" set=1 hide=1] [value name="mv_formel_signal" set="<BLINK>%s</BLINK>" hide=1] To display the label and the form element seperately call C<formel> twice: [formel label=Username: name=login format="%s"] [formel name=login order=1 format="%s"] You may add a help text for the form element. [formel label=Username: name=login help="alphanumeric (5-10 characters)"] EOD -- Master of Swiss Web 2001: http://www.zweifel.ch/ For projects and other business stuff please refer to COBOLT NetServices (URL: http://www.cobolt.net; Email: info@xxxxxxxxxx; Phone: 0041-1-3884400) |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [Checked]: 00525, Victor Nolton |
|---|---|
| Next by Date: | Re: MySQL Query: 00525, Corey Gilmore |
| Previous by Thread: | [Checked]i: 00525, Victor Nolton |
| Next by Thread: | Re: [Checked]: 00525, cfm |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |