EasyUI 自带的Combobox控件,提供了下拉列值自动检索功能。

在用到的EasyUI 1.3.2版本中还是有点问题,在键盘上下键移动选择过程中只能定位在第一个,不能正常向下移动

问题解决方式:不多说,先直接贴代码。

在EasyUI核心文件jquery.easyui.min.js搜索找到对应下面的方法,修改对应的下面两处方法,OK了。

 function _797(_798) {
var _799 = $(_798).combo("panel");
var _79a = $(_798).combo("getValues");
var item = _799.find("div.combobox-item[value=\"" + _79a.pop() + "\"]");
if (item.length) {
//var prev=item.prev(":visible"); 自身代码,有BUG,在手动输入条件检索过程中不能正常键盘上下选择
var prev = item.prevAll(":visible:first"); //用prevAll()替换上面方法
if (prev.length) {
item = prev;
}
} else {
item = _799.find("div.combobox-item:visible:last");
}
var _79b = item.attr("value");
_79c(_798, _79b);
_793(_798, _79b);
};
function _79d(_79e) {
var _79f = $(_79e).combo("panel");
var _7a0 = $(_79e).combo("getValues");
var item = _79f.find("div.combobox-item[value=\"" + _7a0.pop() + "\"]");
if (item.length) {
//var next=item.next(":visible");
var next = item.nextAll(":visible:first"); //此处对应改为nextAll()方法
if (next.length) {
item = next;
}
} else {
item = _79f.find("div.combobox-item:visible:first");
}
var _7a1 = item.attr("value");
_79c(_79e, _7a1);
_793(_79e, _7a1);
};

问题解决完,简单说一下具体原因:

在跟踪EasyUI和页面样式时,发现,在输入检索条件后,下拉列表中显示符合条件的内容,其余的则被添加style="display: none;",在页面中隐匿不可见。

在上面的源码中,我们可以看到对应的上下选择使用的是下面两个方法:

next(":visible");   执行后,效果就是:选择下一个可见的列表项。看下jQuery 的API文档我们知道,next()函数只返回后面那个紧邻的同辈元素。

如果下一项处于隐匿状态,页面下拉列使用键盘上下选择也没有选中的效果。

(测试中发现,next()的"只返回后面那个紧邻的同辈元素" 优先级要高于":visible"选择器效果。如果下一项是隐匿状态,也会被选中,

只是被隐匿,不显示而已。验证的最直观方式是我们提交表单,会发现这个表单是带着值的。)

prev(":visible");  效果同上。

知道了上面两个方法的特性,对源码作了简单修改。

           nextAll(":visible:first");   查找当前元素之后所有的同辈可见元素的第一个。

prevAll(":visible:first");   类上。

OK,阐述完毕,费了半天劲,希望能帮助到遇到同样问题的同志们。

EasyUI 1.3.2 中 Combobox自动检索 键盘上下选择Bug问题的更多相关文章

  1. combobox级联检索下拉选择框

    1.效果图 2.前端 @{ ViewBag.Title = "Index"; Layout = null; @*自动筛选下拉框*@ <script src="~/S ...

  2. 解答WPF中ComboBox SelectedItem Binding不上的Bug

    正在做一个打印机列表,从中选择一个打印机(System.Printing) <ComboBox Width="150" ItemsSource="{Binding ...

  3. C#中combobox不可编辑与不可选择

    不可编辑:comboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 将Style属性改为csDropDownL ...

  4. jQuery EasyUI 1.4.4 Combobox无法检索中文输入的问题

    在项目里使用了EasyUI的Combobox,当ComboBox的item是英文时,都能正常检索出对应项,但是如果使用中文输入法输入几个字母然后通过按shift键输入时,奇怪的事情发生了,combob ...

  5. jquery easyUI中combobox的使用总结

    jquery easyUI中combobox的使用总结 一.如何让jquery-easyui的combobox像select那样不可编辑?为combobox添加editable属性 设置为false ...

  6. easyui combobox 拼音检索快捷选择输入

    easyui combobox 拼音检索快捷选择输入 效果如图   $.ajax({ url: UserActionUrl + '?action=listuserworktype', dataType ...

  7. jQuery EasyUI Combobox无法检索中文输入的问题

    在项目里使用了EasyUI的Combobox,当ComboBox的item是英文时,都能正常检索出对应项,但是如果使用中文输入法输入几个字母然后通过按shift键输入时,奇怪的事情发生了,combob ...

  8. EasyUI 中 Combobox里的onChange和onSelect事件的区别

    EasyUI 中 Combobox 选项发生改变时会触发 onChange,onSelect,onClick 3 个事件. 最近要做一个级联的 Combo 菜单,类似于选择地址时让用户填写省,市,区的 ...

  9. EasyUi模糊匹配搜索框combobox

    现在项目当中很多已经应用了Jquery-easyUi这个界面框架了,所以,学习一点easyUI的常用工具就显得很重要了,现在介绍的就是我在项目中用到的easyUi的模糊匹配组合框combobox. c ...

随机推荐

  1. SpeedReader for Mac(快速阅读器)v1.6免费版

    SpeedReader for Mac是一款运行在Mac平台上的阅读软件,通过这款软件就可以自行调整阅读速度.通过SpeedReader Mac版用户可以将想要阅读的内容拖入到软件中,调整速度和字体, ...

  2. Linux----------mysql基础

    目录 一.数据库介绍 1.1 数据库的优点 1.2 数据库的基本功能 1.3数据库的类型 1.4 关系型数据的组成 1.5 关系型数据库的常用组件 1.6 SQL语句 1.7 mysql命令使用 1. ...

  3. TensorFlow机器学习实战指南之第二章

    一.计算图中的操作 在这个例子中,我们将结合前面所学的知识,传入一个列表到计算图中的操作,并打印返回值: 声明张量和占位符.这里,创建一个numpy数组,传入计算图操作: import tensorf ...

  4. [随笔][胡思乱想][唠叨][web server]

    nginx是一个webserver,最基本的功能是发送静态的文件.类似于apache2的webserver,主要的功能就是响应请求,做出响应. 所说的服务器是安装了服务器软件的物理机,专用的服务器或者 ...

  5. Java JVM里堆和栈的区别

    参考资料: 1.堆和栈的概念和区别 2.JVM虚拟机

  6. python中使用 C 类型的数组以及ctypes 的用法

    Python 在 ctypes 中为我们提供了类似C语言的数据类型, 它的用途(我理解的)可能是: (1) 与 其他语言(如 C.Delphi 等)写的动态连接库DLL 进行交换数据,因为 pytho ...

  7. 执行代码出现ImportError:attempted relative import with no known parent package

    前言 在这篇文章中,我将会解析 ImportError: attempted relative import with no known parent package 这个异常的原因.当你在运行的py ...

  8. squid 3.5 window x64

    下载1: https://download.csdn.net/download/runliuv/11131620 下载2: 链接: https://pan.baidu.com/s/1A_o_Xvg1y ...

  9. ActiveMq报错Channel was inactive for too (>30000)long

    生成环境的activemq 隔一到两周,就报错: 查看 activeme的日志: 2018-12-04 11:59:44,744 | WARN  | Transport Connection to: ...

  10. 弹框时(如大于body的高度),锁死body,使其不能滚动

    if(flag){ document.body.style.height = '100vh' document.body.style['overflow-y'] = 'hidden' }else{ d ...