事件

注意,是否支持一个事件取决于组件。此外,在组件内容更新之后会发送出事件。

鼠标事件

事件名称

组件

描述

onClick

button caption column div groupbox image imagemap label listcell listfooter listheader menuitem tabpanel toolbar toolbarbutton treecell treecol window

事件: org.zkoss.zk.ui.event.MouseEvent

表示用户点击了组件。

onRightClick

button caption checkbox column div groupbox image imagemap label listcell listfooter listheader listitem radio slider tab tabbox tabpanel toolbar toolbarbutton treecell treecol treeitem window

事件: org.zkoss.zk.ui.event.MouseEvent

表示用户右击了组件。

onDoubleClick

button caption checkbox col umn div groupbox image label listcell listfooter listheader listitem tab tabpanel toolbar treecell treecol treeitem window

事件: org.zkoss.zk.ui.event.MouseEvent

表示用户双击了组件。

按键事件

事件名称

组件/描述

onOK

window textbox intbox longbox doublebox decimalbox datebox timebox combobox bandbox

事件:org.zkoss.zk.ui.event.KeyEvent

表示用户按下了ENTER键。

onCancel

window textbox intbox longbox doublebox decimalbox datebox timebox combobox bandbox

事件:org.zkoss.zk.ui.event.KeyEvent

表示用户按下了一个特殊键,例如PgUp,Home,以及和Ctrl或Alt组合键。参考下面的ctrlKeys属性(ctrlKeys Property)一节获取细节。

onCtrlKey

window textbox intbox longbox doublebox decimalbox datebox timebox combobox bandbox

事件:org.zkoss.zk.ui.event.KeyEvent

表示用户按下了ESC键。

按键事件会被送至最近的window,此window已经为指定的事件注册了事件监听器。此事件实现了submit,cancel 和shortcut功能。

如下所示,当T1获得聚焦时,若用户按下了ENTER键则会调用doA()方法。 当T2获得聚焦时,若用户按下了ENTER键则会调用doB()方法。

<window id="A" onOK="doA()">
   <window id="B" onOK="doB()">
      <textbox id="T1"/>
   </window>
   <textbox id="T2"/>
</window

注意, window 并不接收发送至内window 的按键事件,除非你手动提交它们。在上面的例子中,若T1获得了聚焦,事件不会被送至window A,不管是否为window B声明了onOK处理器。

ctrlKeys属性

为了接收onCtrlKey事件,你必须指定什么按键被ctrlKeys属性拦截。换言之,仅在ctrlKeys属性内指定的按键会被送回服务器。例如,若用户按下了Alt+CCtrl+AF10,或 Ctrl+F3,则onCtrlKey事件会被发送出。

<window ctrlKeys="@c a#10 #3">
...

下面为ctrlKeys属性的语法。

描述

  

k

一个控制键, 即Ctrl+k, 这里 k 可以为a~z,0~9,#n 和 ~n。

  

@k

alt 键,即Alt+k, 这里k 可以为 a~z, 0~9, #n 和 ~n。

  

$k

shift键,即Shift+k,这里k可以为#n 和 ~n。

  

#n

一个特殊键,如下。

#home

Home

#end

End

#ins

Ins ert

#del

Del ete

#left

#right

#up

#down

#pgup

PgUp

#pgdn

PgDn

#f n

功能键。 #f1, #f2, ... #f12 对应 F1, F2,... F12

  

输入事件

事件名称

组件

描述

onChange

textbox datebox decimalbox doublebox intbox combobox bandbox

事件:org.zkoss.zk.ui.event.InputEvent

表示输入组件的内容已经被用户修改。

onChanging

textbox datebox decimalbox doublebox intbox combobox bandbox

事件: org.zkoss.zk.ui.event.InputEvent

表示用户正在改变输入组件的内容。注意,直到接收了onChange事件,组件的内容(在服务器)才会改变。因此,你必须调用InputEvent类的getValue方法才能获取到临时值。

onSelection

textbo datebox decimalbox doublebox intbox combobox bandbox

事件:org.zkoss.zk.ui.event.SelectionEvent

表示用户正在选择输入组件的部分文本。你可以使用getStartgetEnd方法获取选中文本的开始及结束位置。

onFocus

textbox datebox decimalbox doublebox intbox combobox bandbox button toolbarbutton checkboxradio

事件:org.zkoss.zk.ui.event.Event

表示一个组件获得了聚焦。

事件监听器是在服务器端执行的,所以当onFocus的事件监听器执行时,客户端的聚焦或许已经改变。

onBlur

textbox datebox decimalbox doublebox intbox combobox bandbox button toolbarbutton checkbox radio

事件:org.zkoss.zk.ui.event.Event

表示一个组件失去了聚焦。

事件监听器是在服务器端执行的,所以当onBlur的事件监听器执行时,客户端的聚焦或许已经改变。

List和Tree 事件

事件名称

组件

描述

onSelect

listbox tabboxtab tree

事件:org.zkoss.zk.ui.event.SelectEvent

表示用户选择了一个或多个子组件。对于listbox 为一套 listitem 。对于tree 为一套treeitem 。对于tabbox为一个tab

注: onSelect被发送至tabtabbox

onOpen

north east west south groupbox treeitem combobox bandbox menupopup window

事件: org.zkoss.zk.ui.event.OpenEvent

表示用户打开或关闭了一个组件。注:不同于onClose, 该事件仅是一个通知。在打开或关闭一个组件后,客户端会发出此事件。

这对于当首次打开组件,通过监听onOpen事件,创建组件来实现随机存取(load-on-demand)是很有用的。

Slider和Scroll事件

事件名称

组件

描述

onScroll

slider

事件: org.zkoss.zk.ui.event.ScrollEvent

表示用户已经滚动了滚动组件的内容。

onScrolling

slider

事件:org.zkoss.zk.ui.event.ScrollEvent

表示用户正在滚动一个滚动组件的内容。注意直到接收了onScroll事件,组件的内容(在服务器端)才会改变。因此,你必须调用ScrollEvent类的getPos方法才能获取临时位置。

其它事件

事件名称

组件

描述

onCreate

all

事件: org.zkoss.ui.zk.ui.event.CreateEvent

表示当送出(rendering)一个ZUML页面时组件被创建。参考组件活动周期一章。

onClose

window tab fileupload

事件: org.zkoss.ui.zk.ui.event.Event

表示用户按下了close按钮,然后组件会移除其自身。

onDrop

all

事件:org.zkoss.ui.zk.ui.event.DropEvent

表示另一个组件被放入了接收此事件的组建。参考拖放一节。

onCheck

checkbox radio radiogroup

事件: org.zkoss.zk.ui.event.CheckEvent

表示用户已经改变了一个组件的状态。

注:onCheck被发送至radioradiogroup

onMove

window

事件: org.zkoss.zk.ui.event.MoveEvent

表示用户已经移动了一个组件。

onSize

window

事件:org.zkoss.zk.ui.event.SizeEvent

表示用户已经改变了一个组件的大小。

onZIndex

window

Event: org.zkoss.zk.ui.event.ZIndexEvent

表示用户已经改变了一个组件的z-index。

onTimer

timer

事件:org.zkoss.zk.ui.event.Event

表示你指定的计时器已经触发了一个事件。要想知道是哪个计时器,可以调用Event类的getTarget方法。

onNotify

any

事件: org.zkoss.zk.ui.event.Event

表示一个独立的应哟用程序事件。它的意义取决于应用程序。目前,还没有组件发送此事件。

onClientInfo

root

事件: org.zkoss.zk.ui.event.ClientInfoEvent

通知一个根组件关于客户端的信息,例如时区和分辨率(resolutions)。

onPiggyback

root

事件: org.zkoss.zku.ui.event.Event

通知根组件客户端已经向服务器发出了一个请求。通常用于捎带非紧急的UI更新到客户端(piggyback non-emergent UI updates to the client)。

onBookmarkChanged

root

事件: org.zkoss.zk.ui.event.BookmarkEvent

通知程序用户按下了BACK, FORWARD 或其它引起标签(bookmark)改变的行为。

onColSize

columns listhead treecols

事件: org.zkoss.zul.event.ColSizeEvent

通知一组页眉(a group of headers)的父组件,用户改变了它的两个子组件的宽度。(Notifies the parent of a group of headers that the widths of two of its children are changed by the user)

onPaging

grid listbox paging

事件:org.zkoss.zul.event.PagingEvent

通知用户选中了多页面组件的某一页面。

onUpload

fileupload

事件: org.zkoss.zul.event.UploadEvent

通知文件已被上传,应用程序可以使用getMediagetMedias方法获取已上传的文件。

onFulfill

all

事件: org.zkoss.zul.event.FulfillEventt

通知fulfill事件已经被应用于目标组件。当所有的后续组件被创建后此事件会被提交。

Radio和radiogroup的事件流

为方便开发人员,onCheck事件首先被发送至raido,然后是radiogroup [51]。因此,你可以为radiogroup或每个radio 按钮添加监听器。

<radiogroup onCheck="fruit.value = self.selectedItem.label">
   <radio label="Apple"/>
   <radio label="Orange"/>
</radiogroup>
You have selected : <label id="fruit"/>

上面的事例和下面的有相同的效果。

<radiogroup>
   <radio label="Apple" onCheck="fruit.value = self.label"/>
   <radio label="Orange" onCheck="fruit.value = self.label"/>
</radiogroup>
You have selected : <label id="fruit"/>



[51] 当一个radio被添加至一个radiogroup时,内部的实现是通过添加一个监听器处理的。