Exactly what I wanted to know.  I'm a bit new to the jQuery scene and
I was not certain if there might be a cleaner way of accomplishing
this behavior.

Thanks!

On Mar 30, 2:20 pm, Jörn Zaefferer <joern.zaeffe...@googlemail.com>
wrote:
> There probably isn't a best practice. The example you link to is just
> that, an example. But I see no reason why you shouldn't use that to
> get started and build whatever you need above it. The validation
> plugin itself is a good choice anyway.
>
> Jörn
>
> On Mon, Mar 30, 2009 at 2:01 PM, Kreeves <kree...@gmail.com> wrote:
>
> > There is plenty of discussion on "Dynamic form validation" in this
> > group, but my question is of a slightly different nature.
>
> > I'm attempting to create a page that will build the form based on user
> > input.  IE: User is prompted with one search box with several
> > options.  They can then hit an "Add search" and be allowed another
> > search box to further narrow down their search results. (The web-app
> > is a report utility).
>
> > I've looked around for websites that do this in an attempt to get an
> > idea of what might be the best way of pulling it off.  One website I
> > ran across did it like so...
>
> > <script type="text/javascript">
> > // only for demo purposes
> > $.validator.setDefaults({
> >        submitHandler: function() {
> >                alert("submitted!");
> >        }
> > });
> > $.validator.messages.max = jQuery.format("Your totals musn't exceed
> > {0}!");
>
> > $.validator.addMethod("quantity", function(value, element) {
> >        return !this.optional(element) && !this.optional($(element).parent
> > ().prev().children("select")[0]);
> > }, "Please select both the item and its amount.");
>
> > $().ready(function() {
> >        $("#orderform").validate({
> >                errorPlacement: function(error, element) {
> >                        error.appendTo( element.parent().next() );
> >                },
> >                highlight: function(element, errorClass) {
> >                        
> > $(element).addClass(errorClass).parent().prev().children
> > ("select").addClass(errorClass);
> >                }
> >        });
>
> >        var template = jQuery.format($("#template").val());
> >        function addRow() {
> >                $(template(i++)).appendTo("#orderitems tbody");
> >        }
>
> >        var i = 1;
> >        // start with one row
> >        addRow();
> >        // add more rows on click
> >        $("#add").click(addRow);
>
> >        // check keyup on quantity inputs to update totals field
> >        $("#orderform").delegate("keyup", "input.quantity", function(event) {
> >                var totals = 0;
> >                $("#orderitems input.quantity").each(function() {
> >                        totals += +this.value;
> >                });
> >                $("#totals").attr("value", totals).valid();
> >        });
>
> > });
> > </script>
>
> > They then wrap the search fields in a textarea and label it a
> > "template".  Note the line ABOVE that reads "var template =
> > jQuery.format"
>
> > <textarea style="display:none" id="template">
> >        <tr>
> >                <td>
> >                        <label>{0}. Item</label>
> >                </td>
> >                <td class='type'>
> >                        <select name="item-type-{0}">
> >                                <option value="">Select...</option>
> >                                <option value="0">Learning jQuery</option>
> >                                <option value="1">jQuery Reference 
> > Guide</option>
> >                                <option value="2">jQuery Cookbook</option>
> >                                <option vlaue="3">jQuery In Action</option>
> >                                <option value="4">jQuery For 
> > Designers</option>
> >                        </select>
> >                </td>
> >                <td class='quantity'>
> >                        <input size='4' class="quantity" min="1" 
> > id="item-quantity-{0}"
> > name="item-quantity-{0}" />
> >                </td>
> >                <td class='quantity-error'></td>
> >        </tr>
> > </textarea>
>
> > The original page is 
> > athttp://jquery.bassistance.de/validate/demo/dynamic-totals.html.
>
> > Is this best practice?  Is there a different way to do this?  It
> > really just seems like a hacked up way to do it.
>
> > Thanks.

Reply via email to