Dojo   发布时间:2022-04-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了dojo控件FilteringSelect的使用经历大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

最近在用dojo做一个项目的前台。版本是1.2.3,期间使用到了FilteringSELEct这个下拉菜单控件。这个控件的功能不错,即可以像传统的SELEct标签一样下拉选择,还可以让用户直接输入进行逐字搜索匹配。不过,东西毕竟是老外做的,使用时还是到了一些水土不服的问题,这些问题在网上搜过,但都没什么结果。现在有些问题解决了,有些没有很完美的解决。现在拿出来和大家一起分享和讨论一下。

问题1:FilteringSELEct和ComboBox控件中文显示问题

发现FilteringSELEct选定选项后,英文可以正常显示在控件中间,但中文有明显的上移,字体上面一小部分被遮盖,下面有较大的空隙。我想应该是dojo的css样式设定问题,于是找到了dijit/themes/dijit.css文件。其中有一段定义ComboBox文本框样式的

其中vertical-align这项认竟然是top,现改为middle后,中文显示正常。


问题2: 在FilteringSELEct中输入文字时,控件认是按照从第一个字开始匹配的。现想对 可选项根据 输入的字进行包含式模糊查询功能

之前查看了FilteringSELEct的API,发现有个queryExpr的属性,根据说明

dojo.data query expression pattern. ${0} will be substituted for the user text. * is used for wildcards. ${0}* means "starts with",*${0}* means "contains", ${0} means "is"

这个*${0}*应该就是我们想要的包含查询了。于是将queryExpr=“ *${0}* 属性加入到 FilteringSELEct得input标签里。但发现这样声明并不起作用,无奈之下,翻了下ComboBox.js的源码,在其中发现了queryExpr属性初始化的位置如下

无奈下,在代码中直接将queryExpr的初始值改为 "*${0}*" ,问题解决

问题3:在 FilteringSELEct输入中文后不像输入英文或数字一样自动进行搜索匹配,只能敲了空格再敲回退键的时候才触发显示提示选项

这个问题比较头疼。继续翻ComboBox的源码,找到ComboBox文本框处理按键事件的函数,如下

搜了下官网论坛,发现亚洲语言都会有这个问题,上面也没有可借鉴的解决方案,这个问题直接原因应该是中文字都是通过输入法软件进行录入的,控件文本框中无法捕捉到键盘的敲击事件导致无法触发search方法

我目前一个变通方式就是在捕捉到enter事件后进行search,添加代码如上。用户在输入文字后按enter键进行模糊查询显示搜索后可选项。

最后一个问题不知道有没有更好的解决方法,期待ing。

大佬总结

以上是大佬教程为你收集整理的dojo控件FilteringSelect的使用经历全部内容,希望文章能够帮你解决dojo控件FilteringSelect的使用经历所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。