eventHandler - Event Handler (property)
Specifies scripts and simple actions to be executed when a control event occurs.
Category
eventsSyntax
For a server event:<xp:eventHandler event="eventname" submit="true|false"
refreshMode="complete|partial|norefresh" refreshId="controlid"
immediate="true|false" execMode="partial|full">
<xp:this.action>
<!--For a script:-->
<![CDATA[#{javascript:script}]]> <!--where script is the text of the script-->
<!--For a simple action:-->
<xp:simpleactionname attributes>content</xp:simpleactionname>
<!--For a simple action group:-->
</xp:this.action>
<xp:actionGroup condition="#{javascript:script}">
<xp:simpleactionname attributes>content</xp:simpleactionname>
...
<!--Can embed simple action groups-->
</xp:actionGroup>
<xp:this.parameters>
<xp:parameter name="name" value="value"></xp:parameter>
...
</xp:this.parameters>
</xp:eventHandler>
For a client event:<xp:eventHandler event="eventname" submit="false">
<xp:this.script>
<!--For a script:-->
<![CDATA[script]]> <!--where script is the text of the script-->
<!--For a simple action:-->
<xp:simpleactionname attributes>content</xp:simpleactionname>
<!--For a simple action group:-->
<xp:scriptGroup conditionScript="script">
<xp:simpleactionname attributes>content</xp:simpleactionname>
...
<!--Can embed simple action groups-->
</xp:scriptGroup>
</xp:this.script>
</xp:eventHandler>
Where:eventname
specifies the name of the event, for example, onblur or onclick. In Design mode, select the appropriate event.submit="true"
causes a request to be sent to the server when the user activates the event. Any other value forsubmit
deactivates the event. In Design mode, click No Submission to remove the event.refreshMode
is one of the following:complete
reloads the entire page to the client after the server processes the request. In Design mode, click Full Update.partial
reloads a selected part of the page using Asynchronous JavaScript™ and XML (AJAX) technology. In Design mode, click Partial Update.norefresh
does not reload the page. In Design mode, click No Update.
refreshId
applies only forrefreshMode="partial"
and specifies the control to be updated. In Design mode, click Select Element.immediate="true"
suppresses data processing on the server. For data processing, omit this attribute or specify anything buttrue
. In Design mode, click Do not validate or update data.execMode="partial"
specifies a partial refresh when a code fragment is executed. For full refresh, omit this attribute or specify anything but partial. In Design mode, click Set partial execution mode.action
specifies either:- the script where
script
is your code. In Design mode, click Script Editor. Enter the script in the script window or open the script dialog. - the name of a simple action and its arguments. In Design mode, click Simple Actions. Use the various buttons and lists to create and edit simple actions.
actionGroup
which can contain simple actions and other action groups. The condition is optional.
- the script where
parameters
specifies the names and values of any event parameters. In Design mode, click Edit Event Parameters.
Usage
Events are actions that a user might perform such as clicking a button or removing focus from an edit box. Event handlers are actions that you (the designer) perform in response to events. An event handler can be a server script, a client script, a simple action, or a simple action group.In Design mode with focus on the control or the page, click the Events tab. Events are treated as properties and appear on All Properties under Properties. However best practice is to not create or modify an event from All Properties.
Examples
This buttononclick
event
creates a new document with a server script:<xp:button value="Create document" id="button4">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<![CDATA[#{javascript:var doc = database.createDocument();
doc.replaceItemValue("subject", requestScope.subject);
doc.save();
requestScope.subject = null}]]>
</xp:this.action>
</xp:eventHandler>
</xp:button>
This button
onclick
event
opens the page named main
with a server simple action:<xp:button id="button5" value="Main page">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<xp:openPage name="/main.xsp" target="newDocument"></xp:openPage>
</xp:this.action>
</xp:eventHandler>
</xp:button>
This button
onclick
event
creates a new document then opens the page named main
with
a simple action group:<xp:button value="Create document" id="button6">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
<xp:actionGroup condition="#{javascript:true}">
<xp:executeScript>
<xp:this.script><![CDATA[#{javascript:var doc = database.createDocument();
doc.replaceItemValue("subject", requestScope.subject);
doc.save();
requestScope.subject = null}]]>
</xp:this.script>
</xp:executeScript>
<xp:openPage name="/main.xsp" target="newDocument"></xp:openPage>
</xp:actionGroup>
</xp:this.action>
</xp:eventHandler>
</xp:button>
This edit box
onblur
event
displays a message if the user text contains spaces:<xp:inputText id="inputText2" value="#{requestScope.subject}">
<xp:eventHandler event="onblur" submit="true" refreshMode="complete">
<xp:this.script>
<![CDATA[var e = window.document.getElementById("#{id:inputText2}");
if(e.value.indexOf(" ") > -1) {
window.alert("You should not have spaces in this value.")}]]>
</xp:this.script>
</xp:eventHandler>
</xp:inputText>