I found my very stupid mistake.  I wasn't checking the type within
updateControls when I setup the submit event.  Thus if I used a DIV that
contained the form two submits got fired, one for the div and one for the
form.  Of course the DIV isn't really a form so it iterates the entire
document.

Thanks for all the help!  Your typeof comment made me go back and look at
what I was doing :)

 - Jeremy



On Tue, Sep 29, 2009 at 11:44 AM, Nalum <mallon.l...@gmail.com> wrote:

>
> try changing this:
> within = within ? $('#' + within) : $(document);
>
> to this:
> within = typeof(within) != 'undefined' ? $('#' + within) : $
> (document);
>
> On Sep 29, 5:33 pm, Jeremy Darling <jeremy.darl...@gmail.com> wrote:
> > Sorry, guess it would help if I explained within :).  The actual full
> method
> > is:
> > function updateControls(within){
> >   within = within?$('#'+within):$(document);
> >   within.submit(validateForm);
> >   within.find(".datepicker").datepicker();
> >   within.find("form").submit(validateForm);
> >   within.find(".datepicker").datepicker();
> >   within.find('.button').each(function(){
> >     $(this).addClass('ui-state-default');
> >     $(this).addClass('ui-corner-all');
> >     $(this).hover(function(){
> >       $(this).addClass('ui-state-hover');
> >     }, function(){
> >       $(this).removeClass('ui-state-hover');
> >     });
> >   });
> >   within.find("textarea.richtext").each(function(i, o){
> >     CKEDITOR.replace(o.id, {uiColor: '#6F0002'});
> >     $(o).before("<a href=\"#\" onclick=\"toggleEditor('"+o.id+"');
> return
> > false;\">Toggle Editor</a><br />");
> >   });
> >   within.find('.treetable').treeTable();
> >
> > }
> >
> > So, basically I can pass a dynamic tab into the method or just let it
> parse
> > the entire document.  In this case its parsing the entire document.
> >
> > On Tue, Sep 29, 2009 at 11:29 AM, Nalum <mallon.l...@gmail.com> wrote:
> >
> > > Try changing within to $('form').
> >
> > > I haven't come across within so I don't know anything about it.
> >
> > > On Sep 29, 4:45 pm, Jeremy <jeremy.darl...@gmail.com> wrote:
> > > > I have built out a fairly rhobust app using jquery and jquery-ui all
> > > > was going well until we started to bring different screens together
> > > > inside a tabbed interface.  Seems that now when we execute our
> > > > validation code on one form its checking the fields of all other
> forms
> > > > on the page.
> >
> > > > All of my forms do have unique ID's and all elements within all forms
> > > > have unique ID's.
> >
> > > > My understanding of using this.find inside of the submit event was
> > > > that it should only find the forms elements am I wrong?
> >
> > > > Method that performs the actual validation:
> > > > function validateForm(event){
> > > >   var allOk = true;
> > > >   $(this).find("*[validation]").each(function(){
> > > >     var elem = $(this);
> > > >     var val = elem.attr('validation');
> > > >     var fn = elem.attr('id');
> > > >     var ok = true;
> > > >     if(val!='') eval('ok = '+val+';');
> > > >     ok = (ok)?true:false;
> > > >     if(allOk&&(!ok)) elem.focus();
> > > >     if(ok) elem.removeClass('error');
> > > >     else{
> > > >       elem.change(function(){
> > > >         var elem = $(this);
> > > >         var fn = elem.attr('id');
> > > >         var val = elem.attr('validation');
> > > >         var ok = true;
> > > >         if(val!='') eval('ok = '+val+';');
> > > >         if(ok) elem.removeClass('error');
> > > >       });
> > > >       elem.addClass('error');
> > > >     }
> > > >     allOk = allOk && ok;
> > > >   });
> > > >   this.valid = allOk;
> > > >   if(!allOk) if(event) event.preventDefault();
> > > >   return allOk;
> >
> > > > }
> >
> > > > Initialized with (inside document.ready):
> > > >   within.find("form").submit(validateForm);
> >
> > > > Thanks,
> > > >  - Jeremy
>

Reply via email to