Disable/enable commandbutton on ajax event

后端 未结 2 1451
生来不讨喜
生来不讨喜 2021-02-10 20:30

I want to be able to disable the commandbutton below once it\'s hit and enable it once the event listener runs and msg1 is rendered.



        
相关标签:
2条回答
  • 2021-02-10 21:22

    You could do it with help of the onevent attribute of <f:ajax> which points to a JavaScript function which handles the JSF Ajax events.

    E.g.:

    <h:commandButton value="Submit">
      <f:ajax execute="@form" render="msg1" listener="#{bean.method}" onevent="handleDisableButton" />
    </h:commandButton>
    

    (note that I fixed the wrong EL in listener as well)

    with this JS:

    function handleDisableButton(data) {
        var buttonElement = data.source; // The HTML DOM element which invoked the ajax event.
        var ajaxStatus = data.status; // Can be "begin", "complete" and "success".
    
        switch (ajaxStatus) {
            case "begin": // This is called right before ajax request is been sent.
                buttonElement.disabled = true;
                break;
    
            case "complete": // This is called right after ajax response is received.
                // We don't want to enable it yet here, right?
                break;
    
            case "success": // This is called when ajax response is successfully processed.
                buttonElement.disabled = false;
                break;
        }
    }
    
    0 讨论(0)
  • 2021-02-10 21:23

    If you use richfaces, the a4j:commandButton has the status attribute which prevent this.

    0 讨论(0)
提交回复
热议问题