再说combobox——onLoadSuccess用法实例

不知道大家有没有发现,在easyUI的combobox实现级联这篇文章里

在对combobox设置的时候,我写了一个onLoadSuccess函数。

这个函数是在加载完远程数据成功后被触发,大致可以分为下面几种情况:

1、若不在onBeforeLoad中限制,无论用何种方式初始化时必触发一次,因为初始化时onBeforeLoad无论如何也都会触发一次

2、若不在onBeforeLoad中限制,在使用remote方式加载数据时,每次发起请求到成功接收到数据后都会触发一次

我之前写的onLoadSuccess函数是为了在进入修改表单的页面时,当主combobox加载数据并翻译完毕后,触发onLoadSuccess从而来加载并翻译级联combobox中的值。

因为级联的combobox完全是被动的,当新建的时候我们是在onSelect这个函数中触发的,而修改进来就需要依靠onLoadSuccess了。

下面看一下我之前的写法:

     	onLoadSuccess:function(){
     		var value = $(this).combobox('getValue');
     		if(value != ''){
    		<span style="white-space:pre">	</span>$('[comboname=city]').combobox('reload', 'test/getCityListByProvince?id=' + $(this).combobox('getValue'));
    		}
     	}

这里先判断了主combobox中是否有值,若有值就去加载级联combobox中的数据去翻译。

有什么问题吗?

这对于editable:false的下拉选择框来说好像没什么问题,因为value肯定只能是对应的value,而不会是其他乱七八糟的东西

但是如果像前一篇文章一样是实现了combobox的自动提示功能的那似乎就有些问题了。

比如我们在输入关键字时,每输一个关键字,都会触发onLoadSuccess,且此时value也有值,且就是你输入的那个值(但是这里个人感觉combobox的设计有点问题,因为输入的值应该作为text才对,没有select之前,value都应该为空才对)

这样一来,就会多出很多错误的请求,因为级联的那个请求只需要在onSelect的时候触发才对。

那么如何改进呢?增加一个判断条件吧

方案1:if($(this).combobox(‘getValue‘) == $(this).combobox(‘getText‘)){return}

看似可行,但实际上发现输入速度过快时,两者的值会不一样!原因也没有深究,放弃之

方案2:由于我这里用到的value都是数字,所以可以用正则表达式判断

if(/^\d+$/.test(value)),这种方案暂时是可行的,但是也不完美,当用户输入数字时也会去触发关键字搜索,所以也得不到什么结果。

方案3:可以利用onBeforeLoad来判断

    onBeforeLoad: function(param){
        if(param == null || param.q == null || param.q.replace(/ /g, '') == ''){
            var value = $(this).combobox('getValue');
            if(value){// 这里可以判断为修改,在这去加载级联combobox中的数据
                param.id = value;
                return true;
            }
            return false;
        }
    } 

方案2和方案3用哪种其实都可以达到目的~

时间: 2024-10-05 23:50:36

再说combobox——onLoadSuccess用法实例的相关文章

winform中的ListBox和ComboBox绑定数据用法实例

本文实例讲述了winform中的ListBox和ComboBox绑定数据用法.分享给大家供大家参考.具体实现方法如下: 本例实现将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容,代码如下: 代码如下: //- //自定义了Person类(有Name,Age,Heigth等属性) List<Person> persons=new List<Person>(); persons.Add(new Person("WuMiao",18,17

vertica从其他表迁移数据到新表(insert into 语句用法实例)

前面一篇开始学习solr的时候,做了个入门的示例http://blog.csdn.net/zjc/article/details/24414271 .虽然可以检索出内容,但总和想象的结果有差异--比如,检索"天龙"两个字,按常规理解,就应该只出来<天龙八部>才对,可是竟然也会把<倚天屠龙记>检出来.后来研究了一下,发现系统是这样处理的:无论是抽索引时还是分析检索词时,都把所有文字按单字拆开.这样,刚好<倚天屠龙记>里包含"天"和&

Struts2常量的具体用法实例

通常struts2加载struts2常量的顺序如下: 1. struts-default.xml:该文件保存在struts2-core-2.0.6.jar文件中.2. struts-plugin.xml:该文件保存在struts2-Xxx-2.0.6.jar等Struts2插件JAR文件中.3. struts.xml:该文件是Web应用默认的Struts2配置文件.4. struts.properties:该文件是Web应用默认的Struts2配置文件.5. web.xml:该文件是Web应用的

JavaScript中字符串分割函数split用法实例

这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaScript中字符串分割函数split用法.分享给大家供大家参考.具体如下: 先来看下面这段代码: <script type="text/javascript"> var str="How are you doing today?" document.write

angularjs中ng-repeat-start与ng-repeat-end用法实例

angularjs中ng-repeat-start与ng-repeat-end用法实例 <!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <meta charset="utf-8"> <title>ng-repeat-start 与 ng-repeat-end的用法</title> <link rel=&qu

XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式

XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式 http://blog.csdn.net/gdjlc/article/details/11374787 2013-09-08 12:16 2824人阅读 评论(0) 收藏 举报 分类: XML(5) 版权声明:本文为博主原创文章,未经博主允许不得转载. XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),作用是定义 XML 文档的合

php教程之Smarty模板用法实例

分享下php之Smarty模板的使用方法. 剖析了smarty模板的使用方法,对于学习smarty的朋友有一定的参考价值. 详情如下: 一.模板中的注释每一个Smarty模板文件,都是通过Web前台语言(xhtml,css和javascript等)结合Smarty引擎的语法开发的.用到的web前台开发的语言和原来的完全一样,注释也没有变化.Smarty注释语法是'左结束符变量值*'和'*右结束符变量值',在这两个定界符之间的内容都是注释内容,可以包含一行或多行,并且用户浏览网页查看原代码时不会看

jquery.cycle.js简单用法实例

样式: a{text-decoration: none;} *{margin:0; padding:0;} /*容器设置*/ .player { width:216px; height:248px; background:url(http://i2.itc.cn/20120117/2cc0_da8f6c82_c8da_693d_7714_9533a013006a_3.jpg) no-repeat; background-color:#ede1d1; position:relative; padd

PHP中__get()和__set()的用法实例详解

PHP中__get()和__set()的用法实例详解 在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属性,对每个字段进行set和get的操作.只需要加上两个魔术方法即可 php面向对象_get(),_set()的用法 一般来说,总是把类的属性定义为private,这更符合 现实的逻辑.但是,对属性的读取和赋值操作是非常频繁的,因此在PHP5中,预定义了两个函数“__get()”和“__set()”来获取和赋值其属 性.类似于java中的javabean的操作,