Thanks Ricardo,
That's along the lines of what I've been working on, althuogh I didn't
think to use data() of the actual field, I was putting it in data
('field_name') of the form itself - your way is probably nicer!

I was wondering, instead of the each() loop above, is there an event
that I could use for when the inputs become visible again?? that way
the inputs know to repopulate themselves when they're re-shown...

On Dec 31, 5:05 am, Ricardo Tomasi <ricardob...@gmail.com> wrote:
> Two issues at play here:
>
> 1. the HTML in most browsers doesn't reflect all recent changes done
> via Javascript
> 2. the browser only saves form values after a submit
>
> What you can do is save the values at the time of removal, and then re-
> fill it when you put it back. Use the data() function:
>
> // removal, store the values
> var oldform = $('#form').children(':input').each(function(){
>    var t = $(this);
>    t.data('value', t.val() );
>
> }).end().remove();
>
> //append and fill
> oldform.appendTo('body').children(':input').each(function(){
>      var t = $(this);
>      t.val( t.data('value') );
>
> });
>
> - ricardo
>
> On Dec 30, 1:39 pm, the_woodsman <elwood.ca...@gmail.com> wrote:
>
> > Hi all,
>
> > I'm trying to save the content of a form into a hidden div, so I can
> > bring it back later.
>
> > However, I also want to save the user's progress on the form. I
> > thought I could just dump $('#form').html() into the hidden div, but
> > this seems to only remember the original html, no new value attributes
> > exist even after I've entered some text.
>
> > I tested with something like this:
>
> >                 $('body').find(':input').each(
>
> >                 function()
> >                 {
> >                         alert($(this).attr('name')+": "+$(this).val()+", 
> > "+$(this).attr
> > ('value'));
> >                         //.val() and .attr(val)  are always up to date
> > and consistent
>
> >                         alert(""+$(this).parent().html());
> >                         //inconsistent with .attr(val)  above, seems to
> > be the original only
>
> >                 }
> >                 );
>
> > An obvious work around would be to iterate through the inputs
> > explicitly setting the value atribute to .val(), which I assume would
> > work, but it seems there must be a more elegant way...
>
> > Is there something like  .liveHtml()?  Or another solution?
>
> > Thanks in advance...

Reply via email to