EasyUI Forum
May 17, 2024, 06:34:03 AM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: 在 combo 的 doQuery 里, 能否不触发 onChange 事件?  (Read 8507 times)
iamjxc
Jr. Member
**
Posts: 80


View Profile
« on: April 23, 2014, 02:08:43 AM »

我想在combo 控件的 onChange 里写如下代码:
   function onComboChange(value, oldValue){
      // 触发原控件的 change 事件
      var el = $(this);
      el.trigger("change", value);
   }

但是发现 doQuery 拼音检索, 执行 filter 时, 会不断触发 onChange 事件
我看 setValues 有第3个参数 remainText, 能否在 remainText==true 时不触发 onChange 事件?

需要修改 combo 的 setValues 方法, 增加 remainText 参数, 然后把 combobox 的 remainText 参数传递过去
在 combo 的 setValues 方法里判断 remainText , 就不调用 onChange

建议把 remainText 参数公开, 有的情况下用起来挺方便的.
« Last Edit: April 23, 2014, 02:14:53 AM by iamjxc » Logged
iamjxc
Jr. Member
**
Posts: 80


View Profile
« Reply #1 on: April 23, 2014, 10:35:03 PM »

看来 stworthy 还没空解决这个问题, 我的变通方案是在 onChange 里过滤多余的调用.

   function onComboChange(value, oldValue){
      var el = $(this);
      var text = el.combo("getText");
      
      if (checkTextInCombo(el, text)) {
         el.trigger("change", value);
      }else{
         // 处理拼音检索后, 用鼠标点选的情况
         if (text == oldValue && text != value){
            el.trigger("change", value);
         }
      }
   }
   
   function checkTextInCombo(el, text){
      // 清空数据的情况, 也触发
      if (text == "") return true;
      
      var datas = null;
      var opt = el.combo("options");
      
      if (opt.type == "combobox"){
         datas = el.combobox("getData");
      }else if (opt.type == "combogrid"){
         var grid = el.combogrid("grid");   // get datagrid object
         datas = grid.datagrid("getRows");
      }else if (opt.type == "combotree"){
         // 没有拼音检索的情况可以直接确认
         return true;
      }
      
      // 校验 text 是否在数据里
      for(var i=0,len=datas.length;i<len;i++){
         var data = datas;
         if (data[opt.textField] == text){
            return true;
         }
      }
      
      return false;
   }
   
   
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!