1) Depends what you have the observer do... Sounds like you are hitting your site every 3/4 of a second for the first hit, and 1.5 seconds after that now. If you are doing a save every time the observer fires. You can write an observer to call a local function instead of doing the AJAX save. but they whole point of doing AJAX saves is to send the data to the server.
2) You can observer a form.. calls a function that looks at the field type and does different work on the change... AKA, start a timer on text field, or call AJAX directly on select field. It is a simple if else on the local JS function. 3) You could remove all existing observers and create a new observer on every new event on a new field. But it would be a bit complex. maybe the onFocus() would work for everything? Not sure. onFocus removers all observers, and makes a new observer for the current field... You would not be able to move an observer around I would think. But this would make it seem like you were. Chris cowboyonrails On Nov 30, 8:40 am, lunaclaire <[email protected]> wrote: > Thx for the responses... a couple of my own: > > 1) is it true that these hit my app (i.e. the server)? I asked the > question thinking the issue would be on the client side only ala > Chris' response... if there's no change, it doesnt seem to call the > autosave fxn, so I dont think I'm getting the server-side hit > > 2) I tried observe_form first, but the issue is that I have some text > fields that I want to observe one way (after text changes every few > secs) and some selects I want to observe another way (only > onchange)... but it seemed to get triggers only in whichever way I > chose for the form, so I'm not sure this can work for my case > > 3) finally, not sure I asked this clearly at the start, but is there > some way to dynamically "move" the observer (on the text field at > least) to the currently focused field and only have one? > > On Nov 30, 6:52 am, "[email protected]" > > <[email protected]> wrote: > > The best way I have found to do this is to observe the form, (you can > > observe an entire form with one observer). > > >http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper... > > > Another thing I have done i the past is have the observer fire off a > > javaScript function, that sets a Timeout of 2 seconds (or some number) > > and stores a value, then if the observe_form fires again, I clear the > > last timeout, create a new time out. This way your save function is > > called on the server only when they user has stopped typing for 2 > > seconds. It is a neat trick that has saved me millions of hits on my > > server. > > > I have noticed that having many observers on a page can cause client > > side performance problems. You may not feel them on your machine, but > > Not all machines swallow JavaScript the same. Your clients may feel a > > lot more performance problems than yourself on something like that. > > > Chris > > > On Nov 26, 12:19 pm, lunaclaire <[email protected]> wrote: > > > > I have a pretty complex form with many text fields and a number of > > > selects. We let the user add multiple types of associated objects to > > > the parent object and to edit the values for those associated objs, so > > > the form can have something like the following number of fields on the > > > page: > > > > 9 text fields + 3 selects + a*(1 text + 1 select) + b*(1 text + 1 > > > select) + c*(1 text + 1 select) + d*(1 text + 1 select) + e*(1 text + > > > 1 select) + f*(7 text + 1 select) > > > > where the a, b, c, etc are the number of the diff types of assoc objs. > > > > Also, it's designed to have an autosave function. I've taken an > > > approach that is working, but I'm concerned that it may not be the > > > best, mostly from a performance aspect. > > > > Each of the text fields has an observe_field set up for it with > > > a :frequency => 1.5 (this seemed to be the best setting for this to > > > catch rapid typing without droopping chars while the autosave is > > > performed). > > > > And each of the selects observe_field() does not have the frequency > > > set, so that it calls the autosave fxn only on change (vs when the > > > user is scrolling over the choices). > > > > Anyway, does anybody see a prob having *lots* of observers like this > > > set up on a page? Seems like there could be a prob with having that > > > many observe_fields set up for the text fields triggering on a > > > frequency basis. > > > > If so, one workaround I thought of was to leave the select observers > > > in place and have one observe_field for the currently focused > > > text_field to reduce the number number triggering every 1.5 secs. > > > > But, if that sounds good, how would I dynamically change the DOM ID of > > > that single observer? Or kill the prev one and create a new one for > > > the newly focused field? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

