
HTML::FormHighlight - Highlights fields in an HTML form.

use HTML::FormHighlight;
my $h = new HTML::FormHighlight;
print $h->highlight(
scalarref => \$form,
fields => [ 'A', 'B', 'C' ],
);
print $h->highlight(
scalarref => \$form,
fields => [ 'A', 'B', 'C' ],
highlight => '*',
mark => '<!-- HIGHLIGHT HERE -->',
all_in_group => 1,
);

HTML::FormHighlight can be used to highlight fields in an HTML form. It uses HTML::Parser to parse the HTML form, and then places text somewhere before each field to highlight the field. You can specify which fields to highlight, and optionally supply a CGI object for it to check whether or not an input value exists before highlighting the field.
It can be used when displaying forms where a user hasn't filled out a required field. The indicator can make it easier for a user to locate the fields that they've missed. If you're interested in more advanced form validation, see HTML::FormValidator. HTML::FillInForm can also be used to fill form fields with values that have already been submitted.

Create a new HTML::FormHighlight object. Example:
$h = new HTML::FormHighlight;
Parse through the HTML form and highlight fields. The method returns a scalar containing the parsed form. Here are a few examples:
To highlight the fields 'A', 'B' and 'C' (form on disk):
$h->highlight(
file => 'form.html',
fields => [ 'A', 'B', 'C' ],
);
To highlight the fields 'A' and 'B' with a smiley face
(form as a scalar):
$h->highlight(
scalarref => \$form,
fields => [ 'A', 'B' ],
highlight => '<img src="smiley.jpg">',
);
To highlight the fields 'A' and 'B' if they haven't been supplied
by form input (form as an array of lines):
$q = new CGI;
$h->highlight(
arrayref => \@form,
fields => [ 'A', 'B' ],
fobject => $q,
);
Note: highlight() will only highlight the first option in a radio or select group unless the all_in_group flag is set to a true value.
Here's a list of possible parameters for highlight() and their descriptions:
code:
=====
$h->highlight(
file => 'form.html',
fields => [ 'A', 'B', 'C' ],
mark => '<!-- MARK THIS -->'
highlight => '***',
);
input:
======
<input type=text name="A">
<!-- MARK THIS --> Field B:<input type=text name="B">
<input type=text name="C">
output:
=======
***<input type=text name="A">
<!-- MARK THIS -->*** Field B:<input type=text name="B">
***<input type=text name="C">
input:
======
Field A: <!-- MARK THIS --><br><input type=text name="A">
Field B: <input type=text name="B">
Field C:
<!-- MARK THIS --><input type=radio name="D" value="1">
<input type=text name="C">
<input type=radio name="D" value="2">
output:
=======
Field A: <!-- MARK THIS -->***<br><input type=text name="A">
Field B: ***<input type=text name="B">
Field C:
<!-- MARK THIS --><input type=radio name="D" value="1">
***<input type=text name="C">
<input type=radio name="D" value="2">
input:
======
Field A:
<!-- MARK THIS --><br> Foo...
<!-- MARK THIS --><br> Bar...
<input type=text name="A">
Field B:
<!-- MARK THIS --><input type=hidden name="E"><input type=text name="B">
Field C:
<select>
<option>
<input type=text name="C">
</select>
output:
=======
Field A:
<!-- MARK THIS --><br> Foo...
<!-- MARK THIS -->***<br> Bar...
<input type=text name="A">
Field B:
<!-- MARK THIS --><input type=hidden name="E">***<input type=text name="B">
Field C:
<select>
<!-- MARK THIS --><option>
***<input type=text name="C">
</select>
Warning: Since the mark field is a regular expression, make sure to escape it appropriately. "\s" will insert the highlight after the last space character. To replace all occurrences of a backslash followed by the letter s, use "\\\s".

For example, if you use "\s" as your mark and "***" as your indicator,
A: <font face="arial"><input type=text name="A">
will result in:
A: <font ***face="arial"><input type=text name="A">
not:
A: ***<font face="arial"><input type=text name="A">

0.03

Adekunle Olonoh, ade@bottledsoftware.com

Hiroki Chalfant

Copyright (c) 2000 Adekunle Olonoh. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
