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 >