6

I want to call a Javascript function as well as issue a backend call at the moment a button is clicked.

This is my code right now :

<apex:commandButton value="Search" action="{!objectCollection}" style="margin-left:10px" reRender="source_search">
 <apex:param name="source" value="true"/>
 <apex:param name="target" value="false"/>
</apex:commandButton>

Is this possible?

1 Answer 1

6

Yes, you can.

You can use the onclick attribute like below.

<apex:commandButton value="Search" action="{!objectCollection}" 
  onclick="callJSFunc()" 
  style="margin-left:10px" reRender="source_search">
  <apex:param name="source" value="true"/>
  <apex:param name="target" value="false"/>
</apex:commandButton>

UPDATE

Based on your comments below, you want to call both JavaScript and Controller's function only if the input is valid. You can achieve this with following code:

<apex:commandButton value="Search" action="{!objectCollection}" 
  onclick="if(!isInputValid()){return false}else{callJSFunc()}" 
  style="margin-left:10px" reRender="source_search">
  <apex:param name="source" value="true"/>
  <apex:param name="target" value="false"/>
</apex:commandButton>

The idea is that the isInputValid() is also a JS function that will validate the input and return true if everything is valid, and false if the input is invalid. If the isInputValid() returns false, neither the controller's function, nor your JavaScript function in the else statement will get called.

2
  • Thanks! Another question. In this case, regardless of good/bad input when the button is clicked both the Action and onclick will execute, correct? Is there any way call the backend function in my controller via the javascript function? Because what I want to do is verify good input before I send it to the backend function Commented Sep 1, 2016 at 20:34
  • @user2582622 please, see my update.
    – smukov
    Commented Sep 1, 2016 at 21:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .