这个标题非常绕口,只是这也是想了半天的成果,对不起体育老师了。

标题想表达的是:之前讲过的用combobox实现自己主动提示组件。只是如今规定该组件不能够保存data中不存在的数据。

最初的想法是通过onChange事件来作推断。可是无奈该函数在自己主动提示的模式下,每change一次会触发2次onChange事件,太诡异了遂放弃之。

并且onChange事件是在每次combobox中的内容改变时触发,若是keyword输入过程中,该事件一直触发。

而我们所要的效果是等用户输入结果再作校验,所以不符合要求。

查找API发现combo提供了一个onHidePanel事件的扩展点,当自己主动提示框隐藏时触发。

当时的想法是:输入完之后当然会隐藏输入框啦,感觉能够当成是完毕输入的标识。

试了试,基本能够满足要求。有点小问题。就是用户高速输入之后点击其它地方。combobox失去焦点之后,有可能连输入框都不显示,何谈隐藏?

哎~通过现有API好像都无法完美地解决这个问题,那么就仅仅有自己写了。。but 我的前端水平真是不怎么样,瞎j8鼓捣了一个版本号,大家凑合看看~

$.extend($.fn.combobox.methods, {
completeCheck:function(jq){
var textbox = jq.combobox('textbox');
console.log(jq)
textbox.on('blur', function(){
setTimeout('doCompleteCheck("' + jq.selector + '")', 200); // 这里先让combobox的一些操作走
})
}
}); function doCompleteCheck(selector){
var jq = $(selector);
var value = jq.combobox('getValue');
var json = jq.combobox('getData');
if(!findInJson(json, value)){
jq.combobox('clear');
jq.combobox('hidePanel');
}
}

我为combobox加入了一个新的方法:completeCheck

主要是为combobox中的textbox加入一个onBlur事件,这个textbox也就是我们在输入时的那个input组件。

那么当textbox失去焦点时则会触发doCompleteCheck函数。可是这里先要让combobox的一些操作先运行

所以我们给了200ms的延迟,之后通过比較是否存在在data中来决定是否须要清空combobox中的输入值

这里补充一点,事实上若是输入的内容不在data中。combobox('getValue')的值都会是undefined,所以这样也能够来推断。

使用的时候就像调用combobox的其它方法一样就能够了。$('#cc').combobox('completeCheck');

combobox自己主动提示组件加入无选中项清空功能的更多相关文章

  1. 利用easyUI的combobox打造自己主动提示组件

    自己主动提示是时下一个非常流行的功能,比方说百度.谷歌的搜索输入框都使用到了这么一个功能. 因为easyUI的combobox设计师已经考虑到了这个功能.所以仅仅需简单几步我们能够轻松打造自己的自己主 ...

  2. 【技巧】为ComboBox添加自动提示

    一.需求来源 最近有个项目用到了ComboBox控件,在演示的时候,要对Word文档中选中部分添加符合DocBook标准的标签,这些标签是DocBook中元素的集合,数据量不多,大概170多个吧,但是 ...

  3. 自绘制HT For Web ComboBox下拉框组件

    传统的HTML5的下拉框select只能实现简单的文字下拉列表,而HTforWeb通用组件中ComboBox不仅能够实现传统HTML5下拉框效果,而且可以在文本框和下拉列表中添加自定义的小图标,让整个 ...

  4. 由于抽签HT For Web ComboBox下拉框组件

    传统HTML5的下拉框select仅仅能实现简单的文字下拉列表,而HT for Web通用组件中ComboBox不仅可以实现传统HTML5下拉框效果,并且可以在文本框和下拉列表中加入自己定义的小图标, ...

  5. Android Studio如何设置自己主动提示代码

    同Eclipse时间,您可以设置,无论你是设置输入不管什么信,可以提示码,在Android Studio也可以 设置.并且比Eclipse设置来的简单. 当然假设你认为代码自己主动提示会减少你的代码水 ...

  6. [js开源组件开发]tip提示组件

    tip提示组件 常见的应用场景中,总是难免会遇到提示信息,比如显示不完全时需要鼠标移上去显示title,比如验证时的错误提示,比如操作按钮的辅助说明等,所以我独立出来了一个小的js组件,tip提示组件 ...

  7. Android Studio代码自己主动提示无效(not available in Power Save mode)

    针对一位博友提的问题,我这边写出来,预计还是非常多人会碰到这个问题,可是不知道怎样解决的. 就是在设置了代码自己主动提示功能后,发现不生效的,怎样设置代码自己主动提示请戳这:Android Studi ...

  8. 从后台绑定数据到ligerui 的comboBox下拉框组件

    这次来记录一下ligerUI的comboBox下拉框组件,ligerUI的API里也有相关描写叙述,上面都是前台写死数据,然后显示在组件中,我这次要说的是将后台的数据绑定到下拉框组件中,废话不多说. ...

  9. myeclipse中配置spring xml自己主动提示

    版权声明: https://blog.csdn.net/zdp072/article/details/24582173 这是一篇分享技巧的文章:myeclipse中配置spring xml自己主动提示 ...

随机推荐

  1. 算法学习 - 图的广度优先遍历(BFS) (C++)

    广度优先遍历 广度优先遍历是非经常见和普遍的一种图的遍历方法了,除了BFS还有DFS也就是深度优先遍历方法.我在我下一篇博客里面会写. 遍历过程 相信每一个看这篇博客的人,都能看懂邻接链表存储图. 不 ...

  2. a标签的背景图在ie8下不显示的问题

    突然发现临下班时候问题就多, 马上下班了被头头告知线上已经上线很久的活动现在有个兼容性问题, a标签的背景图在ie8下会有不显示的情况. 我自己找了台ie8的机器实验了一下, 发现一切正常, 但是在另 ...

  3. bat文件无法双击运行

    问题: win7系统下新建txt文件,编辑脚本内容后,保存为test.bat.每次双击它,只会默认以txt格式打开它,而不是运行它. 解决: 1. 双击打开“我的电脑”,然后在“工具”下选择“文件夹选 ...

  4. 一般报java.lang.NullPointerException的原因有以下几种

    一般报java.lang.NullPointerException的原因有以下几种: ·字符串变量未初始化: ·接口类型的对象没有用具体的类初始化,比如: List lt; 会报错 List lt = ...

  5. bash,bg,bind,break,builtin,caller,compgen, complete,compopt,continue,declare,dirs,disown,enable,eval,exec,expo

    bash,bg,bind,break,builtin,caller,compgen, complete,compopt,continue,declare,dirs,disown,enable,eval ...

  6. Java EE (11) - 影响性能的因素

    垂直层(Tier)影响性能的因素 资源层数据库性能通常考虑以下方面的优化(MySQL为例):--使用哪种存储引擎:MyISAM vs. InnoDB, MERGE, MEMORY, Federated ...

  7. 划分树 静态第k大

    划分树是保存了快速排序的过程的树,可以用来求静态第k小的数 如果,划分树可以看做是线段树,它的左孩子保存了mid-L+1 个 小于等于 a[mid] 的数字,  右孩子保存了 R-mid个大于等于a[ ...

  8. Android学习之 AChartEngine 图表绘制

    Android 开源图表绘制工具AChartEngine地址:http://code.google.com/p/achartengine/ AChartEngine Android实现图表绘制和展示( ...

  9. Android应用开发-小巫CSDN博客client之显示博文具体内容

    Android应用开发-小巫CSDN博客客户端之显示博文具体内容 上篇博文给大家介绍的是怎样嵌入有米广告而且获取收益,本篇博客打算讲讲关于怎样在一个ListView里显示博文的具体信息.这个可能是童鞋 ...

  10. HSQL

    Whenever I connect to HSQLDB from my application deployed on eclipse Juno, it throws an exception as ...