<html><head><title>CGI::FormBuilder::Template::HTC example</title></head>
<body>
<script type="text/javascript"><!-- hide from old browsers
function validate (form) {
var alertstr = '';
var invalid = 0;
// color: select list, always assume it's multiple to get all values
var color = null;
var selected_color = 0;
for (var loop = 0; loop < form.elements['color'].options.length; loop++) {
if (form.elements['color'].options[loop].selected) {
color = form.elements['color'].options[loop].value;
selected_color++;
if (color == null || (color != 'red' && color != 'blue' && color != 'yellow' && color != 'pink')) {
alertstr += '- Select an option from the "Color" list\n';
invalid++;
}
} // if
} // for color
if (! selected_color) {
alertstr += '- Select an option from the "Color" list\n';
invalid++;
}
if (invalid > 0 || alertstr != '') {
if (! invalid) invalid = 'The following'; // catch for programmer error
alert(''+invalid+' error(s) were encountered with your submission:'+'\n\n'
+alertstr+'\n'+'Please correct these fields and try again.');
// reset counters
alertstr = '';
invalid = 0;
return false;
}
return true; // all checked ok
}
//-->
</script>
<!-- Generated by CGI::FormBuilder v3.0401 available from www.formbuilder.org -->
<form action="TEST" method="get" onsubmit="return validate(this);"><input id="_submitted" name="_submitted" type="hidden" value="1" />
NAME:<input id="name" name="name" type="text" /><br>
COLOR:<select id="color" multiple="multiple" name="color">
<option value="red">Red</option>
<option selected="selected" value="green">Green</option>
<option value="blue">Blue</option>
</select><br>
SIZE:42<br>
<input id="_submit" name="_submit" onclick="this.form._submit.value = this.value;" type="submit" value="Update" /><input id="_submit_2" name="_submit" onclick="this.form._submit.value = this.value;" type="submit" value="Delete" /><br>
</form>
<h2>Script: examples/form_htc.pl</h2><p>
<hr>
<h2>The Script:</h2>
<pre>
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use blib;
use CGI::FormBuilder;
use Fcntl qw(:seek);
my ($template, $perlcode);
{
local $/;
$template = <DATA>;
seek DATA, 0, SEEK_SET;
$perlcode = <DATA>;
}
my $form = CGI::FormBuilder->new(
action => 'TEST',
title => 'TEST',
fields => [qw/name color email/],
submit => [qw/Update Delete/],
reset => 0,
template => {
scalarref => \$template,
type => 'HTC',
variable => 'form',
tagstyle => [qw(-classic -comment -asp +tt)],
data => {
script => $perlcode,
template => $template,
script => $0,
perlcode => $perlcode,
},
},
values => { color => [qw/yellow green orange/] },
validate => { color => [qw(red blue yellow pink)] },
);
my $mod = {
color => {
options => [[qw/red Red/],[qw/green Green/],[qw/ blue Blue/]],
type => 'select',
},
size => { value => 42 }
};
while ( my ( $f, $o ) = each %{$mod} ) {
$o->{name} = $f;
$form->field(%$o);
}
my $out = $form->render;
print "$out\n";
__DATA__
<html><head><title>CGI::FormBuilder::Template::HTC example</title></head>
<body>
[%= form.jshead%]
[%= form.start%]
NAME:[%= form.field.name.field%]<br>
COLOR:[%= form.field.color.field %]<br>
SIZE:[%= form.field.size.value%]<br>
[%= form.submit%]<br>
[%= form.end%]
<h2>Script: [%= .script %]</h2><p>
<hr>
<h2>The Script:</h2>
<pre>
[%= perlcode escape=html %]
</pre>
</body></html>
</pre>
</body></html>