我正在為 ZK Framework Combobox UI 渲染而苦苦掙扎。我有一個帶有2 個邏輯串列的組合框(1 是 2 的簡短版本,帶有“顯示更多”選項,2 是一個包含所有條目且沒有“顯示更多”選項的串列)。我已經完成了一些由“顯示更多”選項的 onClick 事件跟蹤的串列交換邏輯。當我單擊此選項時,組合框會關閉,然后我需要重新打開它才能查看完整串列。所以我的問題是,當我單擊此特定選項(此外,通過另一個串列動態填充模型)時,有沒有人知道如何保持組合框打開?也許還有其他關于如何更有效地完成任務的最佳實踐?謝謝大家的幫助
我有一個關于啟用多項選擇的組合框的想法 - 單擊某個選項時它不會關閉,但我沒有找到任何相關資訊。也許你可以提出你的建議
uj5u.com熱心網友回復:
默認情況下不支持您想要“單擊'顯示更多'并保持彈出視窗打開”的行為。所以你必須覆寫它的 js 小部件doClick_(),請閱讀
https://www.zkoss.org/wiki/ZK_Client-side_Reference/General_Control/Widget_Customization
這是一個例子。
<zscript><![CDATA[
ListModelList fullModel = new ListModelList(Locale.getAvailableLocales());
ListModelList model1 = new ListModelList(fullModel.subList(0, 2));
model1.add("show more");
]]></zscript>
<combobox id="box" model="${model1}" readonly="true" onSelect="loadAll()"/>
<script src="comboitem-doclick.js"/>
<zscript><![CDATA[
public void loadAll(){
if (model1.getSelection().iterator().next().equals("show more")){
box.setModel(fullModel);
box.setValue("");
}
}
]]></zscript>
/**
* Purpose: when a use selects a specific item, keep the popup open.
* Based on version: 9.6.3
*/
zk.afterLoad('zul.inp', function() {
var exWidget = {};
zk.override(zul.inp.Comboitem.prototype, exWidget, {
doClick_: function doClick_(evt) {
if (!this._disabled) {
var cb = this.parent;
cb._select(this, {
sendOnSelect: true,
sendOnChange: true
});
this._updateHoverImage();
if (this.getLabel() != 'show more'){
cb.close({
sendOnOpen: true,
focus: true
}); // Fixed the onFocus event is triggered too late in IE.
}
cb._shallClose = true;
if (zul.inp.InputCtrl.isPreservedFocus(this)) zk(cb.getInputNode()).focus();
evt.stop();
}
},
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529256.html
上一篇:在Kivy中每秒顯示一個亂數
下一篇:在Kivy中每秒顯示一個亂數
