if you want something specific then you can already do ajaxtarget.focus()
ajaxtarget.appendjavascript("document.getelementbyid ('"+c.getmarkupid()+"').focus();") if you want this more general so it works transparently its trickier. then like you said you need to keep track of focus in a var and append it to ajax urls. which we can do. this new event stuff allows us to attach onfocus event to everything so we can track it easily. -igor On 2/19/07, Johan Compagner <[EMAIL PROTECTED]> wrote:
What i want is this: component.add(new ajaxbehaviour("onfocus")) then in the onEvent i do ajaxtarget.add(component) but then the focus is gone. So what should happen is that the focus is tracked on the page and when a ajax request comes back then it does focus() again. What we also can do is that i do it on the server side: onEvent(AjaxTarget) { ajaxtarget.add(component); ajaxtarget.setFocus(component,ignoreEvents) } then i can controll it on the serverside completely johan On 2/19/07, Johan Compagner <[EMAIL PROTECTED]> wrote: > > really? > matej, do tell! > > i can work on it also because i really need it :) > > johan > > > On 2/19/07, Igor Vaynberg < [EMAIL PROTECTED]> wrote: > > > > yes, tracking is easy with our new event thing :) > > > > get on it matej! > > > > -igor > > > > > > On 2/19/07, Johan Compagner <[EMAIL PROTECTED]> wrote: > > > > > > attach an onfocus event on all focusable components > > > then have a javascript variable in the page that gets that assigned > > > > > > <input type="text" onfocus="lastfocuscomponent=this;MaybeAnAjaxCall"> > > > > > > then i prepend a script that uses that lastfocuscomponent variable to > > get > > > the focus back in. > > > Ofcourse the onFocus event should be cleared or ignored for one time > > if > > > there is an MaybeAnAjaxCall ... > > > > > > so the tracking is pretty easy, it is the handling after that. > > > > > > johan > > > > > > > > > > > > On 2/19/07, Matej Knopp <[EMAIL PROTECTED]> wrote: > > > > > > > > the question is, how exactly you want to track the changing of > > focus? > > > > > > > > -Matej > > > > > > > > Johan Compagner wrote: > > > > > if i have an ajax behavior on a text field event: onfocus > > > > > > > > > > and i set the background and then add that component to the ajax > > event > > > > for > > > > > redraw > > > > > then i loose focus. Ofcourse there are ways to go around that.. > > > > > for example i could just write the style tag out instead of the > > > complete > > > > > component. > > > > > But what when it gets a bit harder? (like a parent is altered and > > > > > rerendered) > > > > > > > > > > i could attach a behavior (onfocus) to all components and let them > > set > > > > > the last know focus component. And then append to every ajax call > > a > > > > script: > > > > > if (lastfocuscomponent) lastfocuscomponent.focus(); > > > > > the problem with this is that this focus gained should be ignored > > if > > > > there > > > > > was an ajax focus > > > > > gained event that the server wants to receive , else you could > > have an > > > > > endless loop. > > > > > > > > > > Can't wicket do this for the developer? > > > > > so track the latest focus component when an ajax call is > > dispatched. > > > And > > > > > when it returns > > > > > set the focus back (and then ignore that focus gained event...) > > > > > > > > > > johan > > > > > > > > > > > > > > > > > > > > > > > > > > > >