Post · 2010-12-04 14:05

[zk] 如何在zk註冊 Component 的 client side 事件。

作者TonyQ (沉默是金。)看板java
標題[zk] 如何在zk註冊 Component 的 client side 事件。
時間Fri Dec 3 20:53:42 2010
───────────────────────────────────────
這個其實是回應這篇forum 時,想到的範例。
http://www.zkoss.org/forum/listComment/14637
過去在 jsp 的世界中,我們常常會用 javascript 在送出表單前作 form 的驗證,
但在 zk 的世界裡雖然已經有提供輸入元件(InputElement,如textbox、datebox)
透過 constraint 來驗證的方式。
@see http://0rz.tw/uJ3xJ about constraint
如果你過去習慣 jsp 這樣的作法,
你現在仍然可以透過註冊 Widget event 在javascript端去進行一些處理,
來決定這個事件是不是要繼續送回伺服器端進行後續的處理。
當然,能夠註冊client 事件也有助於你在zk世界中跟其他第三方元件的溝通,
比方說當顯示一張圖片時進行一些jQuery 處理行為的加載之類的。
具體程式碼
<vbox xmlns:w="client">
<textbox width="350px" id="hi"
value="if you don't change me i will not send to server">
<button label="Test" orient="vertical" width="125px">
<attribute w:name="onClick"> //Client Side
//validation here
//simple validation to prevent default word
if(jq("$hi").val()=="if you don't change me i will not send to server" ){
alert("client event stoped!");
event.stop();
}
</attribute>
<attribute name="onClick"> //Server Side
alert("clicked");
</attribute>
</button>
</textbox>
</vbox>
[/code]
這個範例演示一個情形,當我一定要修改輸入框的字才繼續進行伺服器端的處理時,
我可以註冊該按鈕的 client onClick 事件(注意w: 這個 xml namespace ),
並在我不想要它送給 server 時將事件停下。(event.stop() )
x
具體操作情形跟範例可以看這影片。
http://0rz.tw/wZWJY
--
話說回來,是說 ptt 這裡好像 zk developer 不多......
--
網頁上拉近距離的幫手 實現 GMail豐富應用的功臣
數也數不清的友善使用者體驗 這就是javascript
歡迎同好到 AJAX 板一同討論。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.44.37
--
▄▅▆▇███▇▆▅▄▃ ╰┼╯─╮ ╮
◥███████████◣ ╰┼╯=│=│
◥██████───────◣ *. ╯ ╯ ╯ の 物 語 .*
◥███████──────◣ ~ ◢◣ ◢◣
◥██████───────◤ ◥◤* 空白的世界.翼 *◥◤
◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂~telnet://tony1223.no-ip.info
--
╭═ Origin ─═ 北極光 aurora.twbbs.org κλμ ─╣
╚─ Author ═─ 114-136-163-210.dynamic.h
Replies
0
Likes
0
Reposts
0

Comments

No approved comments yet.