Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disable `<h:commandButton>` after clicked, but action should be fired

I have a <h:commandButton> in my XHTML page. I want the button to be disabled as soon as I click the button. Then the button should call the action. My button gets disabled as I expect but the problem is that the action is not fired.
<h:commandButton value="Go" onclick="this.disabled=true" action="#{bean.go()}"/>

But if I remove the onclick attribute the action is fired.

Or if I used an <a4j:commandButton> it works.
Following a4j button works.
<a4j:commandButton value="Go" onclick="this.disabled=true" action="#{bean.go()}"/>

How can I disable a <h:commandButton> after being clicked, so that the action still fires?

like image 971
prageeth Avatar asked Oct 29 '12 06:10

prageeth


People also ask

How to disable button after One click in vf page?

Use this. disabled=true; or this. disabled="disabled"; .

How do I disable a clicked button?

1.1 To disable a submit button, you just need to add a disabled attribute to the submit button. $("#btnSubmit"). attr("disabled", true); 1.2 To enable a disabled button, set the disabled attribute to false, or remove the disabled attribute.

What is H commandButton?

h. Tag commandButton. Renders an HTML "input" element. Decode Behavior. Obtain the Map from the "requestParameterMap" property of the ExternalContext .


1 Answers

Use setTimeout , that way the action will be fired and the button will be disabled...

<h:commandButton value="Go"
   onclick="setTimeout('this.disabled = true;', 50);" 
   action="#{bean.go()}"/>

You can also take a look at the following question too :How can I disable an h:commandButton without preventing the action and actionListener from being called?

like image 87
Daniel Avatar answered Oct 06 '22 07:10

Daniel