Kevin Shah
Kevin Shah

Reputation: 43

How to set focus of UIComponent after <f:ajax request completed?

First of all, Thanks a lot all of you for your continuous support.

I have a problem releated .xhtml and 'f:ajax'.

I am setting richfaces:collapsiblepanel 'expanded' attribute by bean variable which is default collapsed and on blur event it gets expanded. I want to set focus a UIComponent after f:ajax request compeleted. And for that I have written a function in javascript and called it in 'onevent' of f:ajax.

But onevent function fires before panel open and I can not able to set focus on UIComponent which are define in that collapsible panel.

How can I setFocus or How can I fire that function after ajax request compeleted ?

Thanks in advance.

Upvotes: 1

Views: 2248

Answers (1)

Daniel
Daniel

Reputation: 37061

Your js function should look like this

function doTheFocus(data) {
    if (data.status === 'success') {
        //here goes the js code that will set the focus
        //this code will be executed only when the ajax will be done
    }
}

And here is how your f:ajax will look like

<f:ajax onevent="doTheFocus" />

If you want to call the js function of the focus when the panel is opened you can try

<rich:collapsiblePanel onswitch="doTheFocus"

or (I'm not sure...)

<rich:collapsiblePanel onswitch="doTheFocus()"

If you eventually will use the onswitch , you might be needed to add some logic inside doTheFocus function to check if the panel is expanded or not...

Upvotes: 3

Related Questions