目的:使用combobox实现一个类似搜索框的效果,即用户输入内容后,出现相关下列列表,提供选择。

实现:extjs3 中combobox自身带这个功能即在remote模式下,store在load的时候会将用户输入作为参数传递到后台。

需要设置的属性:

1. hideTrigger: true, // 去掉右侧的小标志

2. mode : 'remote', // 数据需要远程下载

3. minChars:2, // 设置用户输入字符多少时触发查询

4. queryParam: 'userinput', // 设置用户传递参数的名称,默认是 ‘query’

store的定义: (这里的method 设置为 post ,如果是get方式的话,输入中文的话 后台需要url转码)

  1. var ds = new Ext.data.Store({
  2. proxy : new Ext.data.HttpProxy({
  3.  
  4. url : WEB_CONTEXT+'xxx.action',
  5. method:'post'
  6. }),
  7. reader : new Ext.data.JsonReader({}, [{
  8. name : 'VALUE'
  9. }, {
  10. name : 'TEXT'
  11. }])
  12. });

  当用户输入2个字符时,加载store,调用后台,在后台可以取得用户输入内容。 ("userinput"),在后台处理的时候以用户输入为参数,得到想要的store内容。

可以添加 beforquery 函数看下

  1. listeners:{
  2.                     beforequery:function(qe){
  3.                          var para = qe.query ;
  4.                     }
  5.               }

 chrome中断点调试

在源码中发现:

  1. doQuery : function(q, forceAll){
  2. q = Ext.isEmpty(q) ? '' : q;
  3. var qe = {
  4. query: q,
  5. forceAll: forceAll,
  6. combo: this,
  7. cancel:false
  8. };
  9. if(this.fireEvent('beforequery', qe)===false || qe.cancel){
  10. return false;
  11. }
  12. q = qe.query;
  13. forceAll = qe.forceAll;
  14. if(forceAll === true || (q.length >= this.minChars)){
  15. if(this.lastQuery !== q){
  16. this.lastQuery = q;
  17. if(this.mode == 'local'){
  18. this.selectedIndex = -1;
  19. if(forceAll){
  20. this.store.clearFilter();
  21. }else{
  22. this.store.filter(this.displayField, q);
  23. }
  24. this.onLoad();
  25. }else{
  26. this.store.baseParams[this.queryParam] = q; //q 为用户输入内容
  27. this.store.load({
  28. params: this.getParams(q) // 此处加载了store
  29. });
  30. this.expand();
  31. }
  32. }else{
  33. this.selectedIndex = -1;
  34. this.onLoad();
  35. }
  36. }
  37. },

  

combobox的定义:

  1. var search = new Ext.form.ComboBox({
  2. mode : 'remote',//远程数据
  3. // typeAhead : true,
  4. // typeAheadDelay:300,
  5. triggerAction: 'all',
  6. minChars:2,
  7. store : ds,
  8. editable:true,
  9. queryParam: 'userinput',
  10. // autoLoad:true,
  11. // lastQuery:'',
  12. // loadingText : 'Searching...',
  13. width : 300,
  14. //editable:true,
  15. //lastQuery: '',
  16. hideTrigger: true,
  17. //typeAheadDelay: 100,
  18. displayField : 'SHOWNAME',
  19. valueField : 'VALUE',
  20. fieldLabel : '类型',
  21.  
  22. listeners:{
  23.                     beforequery:function(qe){
  24.                         var para = qe.query ;  // 
  25.                     }
  26.               }
  27. });

  

Extjs combobox 实现搜索框的效果的更多相关文章

  1. js借助JSONP实现百度搜索框提示效果

    主要借助百度搜索的API,调用时会存在跨域问题,需要通过JSONP来解决这个问题,代码如下(代码中部分使用ES6语法): HTML <input type="text" id ...

  2. extjs在窗体中添加搜索框

    在extjs中添加搜索框,搜索框代码如下: this.searchField = new Ext.ux.form.SearchField({            store : this.store ...

  3. CSS3实现的苹果网站搜索框效果

    在线演示 本地下载 用CSS3相关属性生成的动态搜索框效果.

  4. easyui 设置一加载,搜索框立即弹出的效果

    1.部分html文件 <div id="searchForm" region="north" title="标的查询" collaps ...

  5. ComboBox可搜索下拉框的使用注意事项,简单记录以及我遇到的一些奇怪的bug

    前几天做一个react的项目的时候需要用一个可搜索的下拉框ComboBox,上代码: <ComboBox // className={comboxClassName} items={storeA ...

  6. 用jQuery实现搜索框的过滤效果

    遇到的问题: 1.动态添加了某些元素,在动态添加的某个元素上绑定事件失效 原因:因为需要绑定的元素的直接父元素也是动态添加的解决:向上为上一级父元素绑定事件 $(".check-box&qu ...

  7. Extjs 中combobox下拉框初始化赋值

    近日在工作中遇到一个需求,要求页面初始化的时候给dataGrid表插入一条数据. 前端使用的是Extjs框架,dataGrid表有四列,其中三列是类型为textbox,普通文本框,另外一列类型是com ...

  8. 使用jQuery和CSS3生成的搜索框变形全屏搜索效果

    在线演示 本地下载 使用jQuery和CSS3过渡变形效果生成的一个搜索框变形效果实现,可以帮助你更好利用页面格式和内容.实验性质的代码,请大家在产品环境里自己修改使用!

  9. HTML5轻松实现搜索框提示文字点击消失---及placeholder颜色的设置

    在做搜索框的时候无意间发现html5的input里有个placeholder属性能轻松实现提示文字点击消失功能,之前还傻傻的在用js来实现类似功能... 示例 <form action=&quo ...

随机推荐

  1. winform最小化及关闭提示

    public PrintService() { InitializeComponent(); this.WindowState = FormWindowState.Minimized; } priva ...

  2. FreeSWITCH技巧:notify与message-waiting

    FreeSWITCH技巧:notify与message-waiting @(Freeswitch经验点滴) 现象描述 在客户端登陆抓包时,发现了FreeSWITCH发来的包: NOTIFY sip:9 ...

  3. Myeclipse10安装git 完美解决-费元星

    1. 拥有自己的github版本库 这年头,不在GitHub上弄几个项目都不好意思跟人家打招呼. 首先,进入GitHub注册账号,话说人家这页面做的那叫一个舒服啊. 然后,登陆并创建自己的版本库(Re ...

  4. 未设置BufferSize导致FTP下载速度过慢的问题

    開始下载前设置BufferSize就可以解决: ftpClient.setBufferSize(1024*1024); 查看commons-net的源代码.能够发现假设未设置该參数.将会一个字节一个字 ...

  5. Window 窗口类

    窗口类 WNDCLASS 总结 总结为下面的几个问题: . 什么是窗口类 . 窗口类的三种类型 . 窗口类各字段含义 . 窗口类的注册和注销 . 如何使用窗口类,子类化.超类化是什么 下面分别描述: ...

  6. mysql替换成指定字符

    ,,, ), 'XXXX' )-- 隐藏从第四位开始的6个字符,包括第四个字符,替换成X

  7. matlab和c++混合编程---matlab和vs的环境配置问题及方法和步骤(转载)

    matlab和c++混合编程---方法和步骤 matlab和c++混合编程---matlab和vs的环境配置问题 摘要:Matlab具有很强的数值计算和分析等能力,而C/C++是目前最为流行的高级程序 ...

  8. 安装 RabbitMQ (WINDOWS)

    基础知识: RabbitMQ 是一个开源的MQ,使用  Erlang 写成. MQ 全称是Message Queue (消息队列), 是一种应用程序对应用程序的通信方法.通过消息队列,应用程序之间可以 ...

  9. Nexus 5 刷机 - Android 5.0 Lollipop

    Nexus刷机 : 官方地址 刷机步骤 下载相应的安装包 连接USB 重启手机,进入BootLoader界面 : 使用命令 adb reboot bootloader 关机; 音量键下 + 电源键 ...

  10. markdown完整语法规范3.0+编辑工具介绍

    以下每一种,我都会挑选最常用的一种写法,一切表述只追求简明扼要.想深究,请查看文末链接. 通用写法:符号+空格+内容 1 引用: 单层引用: > 一级引用 多层引用:内层符号前的空格必须要 &g ...