1.4 版悄然发布, 感谢作者的不懈努力. 原来 stworthy 不回答问题, 是忙着开发 1.4 去了.
经过一天的尝试, 基本把 1.4 集成到项目里, 下面是我的试用体会.
1.4 新特性
textbox 的出现太赞了, 终于统一了 form 里各个元素的外观样式
而且整合了 prompt 和 button , textbox 似乎是从 searchbox 改造而来的?
各个控件获得焦点后, 边框有光晕效果, 还不错
filebox 也很赞, datetimespinner 正是我需要的, 不过今天没时间, 明天尝试用一下
combo 的 panelMaxHeight 属性, 我曾提过用css控制的方案, 不过这个对浏览器兼容更好些, 而且能够单独控制
required 必填项提示, 去掉了难看的惊叹号图标, 改用粉红色背景标识, 还不错
easyui 控件只读后, 背景色还是白色, 应把只读项与可编辑项目区分开, 如:
input[readonly]{background-color: #f4f0f0;}
1.4 发布日志里没写, 实际测试已解决的:
在有 layout 的页面里打开一个fit=true 的 dialog, 则浏览器窗口缩放时 dialog 不缩放的问题已解决
1.4 新的问题和建议
textbox 在录入时, 回车执行查询操作, 但是值没有提交, 只有textbox失去焦点时才把值赋给 textbox-value 控件
我发现 datebox 的 onchange 是在输入时就触发的, 并且 keyHandler 支持 enter
建议 textbox 也统一编程模型, 统一控件的事件特性
我的临时解决方案, 自己写 keydown 处理
var text = el.textbox("getText");
el.textbox("setValue", text);
filebox 在 chrome 里文字显示位置有问题, 向上错位了
必填项提示的国际化字符串有遗漏, 需要加入下面的
if ($.fn.textbox){
$.fn.textbox.defaults.missingMessage = '该输入项为必输项';
}
combo-arrow 不应该获得焦点
在按tab键跳转时, 焦点先跳到combo-arrow上, 再按一次tab才进入combo-text, 操作麻烦
建议设置 combo-arrow 的 tabIndex=-1
combogrid 的高度似乎有问题, combogrid 的 padding 是 4px, 其它控件都是 2px
padding-bottom: 4px;
padding-top: 4px;
combotree 仍然无法实现在 onlyLeafCheck=true 并且 checkbox=false 的情况下, 即单选时, 控制只能选择叶子节点
onlyLeafCheck 参数只是控制了多选时不生成复选框
而实际项目有这样的需求, 即用户不能选择分类, 只能选择叶子节点
datagrid 控件, 为什么行号显示 NaN 呢?
必须显式设置 pageSize: 30 才行, 也可能是其他参数冲突导致?
textbox 初始化时, 如果 multiline = true , 并且没有设置 width 和 height 参数, 并且 target 是 textarea, 则建议取 textarea 的 height
combobox
为了实现汉字拼音检索的支持, 我复写了 doQuery 方法, 但是 doQuery 里调用了 request 方法, 让我很受伤
if (opts.mode == 'remote'){
request(target, null, {q:q}, true);
}
request 方法没有暴露. 复写的 doQuery 里如何调用这个 request 呢?
我的方案是直接修改 easyui 1.4 压缩后的代码, 把 request 接口暴露出来.
通过下面的参考语句, 定位要修改的位置
查找到 .find("div.combobox-item,div.combobox-group").hide();
往上找到下面的内容
if(opts.mode=="remote"){
_8f9(_8fe,null,{q:q},true); // 则 _8f9 就是request编译后的方法名
}
再找到 $.fn.combobox.defaults=$.extend({},$.fn.combo.defaults
往下找到 mode:"local",method:"post",
手工插入: request:_8f9,
这样, 就把 request 方法暴露出来, 然后在 doQuery 里就能调用 request 了
if (opts.mode == 'remote'){
$.fn.combobox.defaults.request(target, null, {q:q}, true);
}
希望 stworthy 给一个更好的方案.