2011-09-08 83 views
3

我試圖在sencha touch的文本字段中實現列表過濾器。例如,我有一堆聯繫人,當我在字段中輸入時,它可能會按名稱過濾。當我點擊圓形X按鈕清除文本框時,我想重置過濾器來過濾沒有任何聯繫人。sencha touch textfield clear event

問題是,我似乎無法找出一種方法來檢測清除按鈕上的點擊。似乎沒有任何類型的事件,並且我似乎無法解決問題。

如果任何人有任何想法如何檢測sencha觸摸中的文本字段清除,我會非常感激。

我試過在safari和xcode模擬器中,並且正在使用sencha touch 1.1.0。我錯過了什麼嗎?當它實際上是一個移動應用時,這不是問題嗎?

回答

7

您可以偵聽點擊事件上clearIconContainerEl文本字段內或覆蓋onClearIconTap方法。

Ext.setup({ 
    icon: 'icon.png', 
    tabletStartupScreen: 'tablet_startup.png', 
    phoneStartupScreen: 'phone_startup.png', 
    glossOnIcon: false, 
    onReady: function() { 

     var searchField = new Ext.form.Search({ 
      name : 'search', 
      placeHolder: 'Search', 
      useClearIcon: true, 

      onClearIconTap: function() { 
       if (!this.disabled) { 
        this.setValue(''); 
        console.log('onClearTap: Clear button tapped!');      
       } 
      } 
     }); 

     var viewport = new Ext.Panel({ 
      fullscreen: true, 
      dockedItems: [{ 
       xtype: 'toolbar', 
       dock: 'top', 
       items: [searchField] 
      }] 
     }); 

     console.log(searchField.useClearIcon); 

     searchField.mon(searchField.clearIconContainerEl, { 
      scope: searchField, 
      tap: function() { 
       if (!this.disabled) { 
        console.log('clearIconContainerEl: Clear button tapped!'); 
       } 
      } 
     }); 
    } 
}); 
+1

我覆蓋了清除IconTap來清除事件。如果useClearIcon設置爲true,則onClearIconTap被擊中,然後我可以捕獲清除事件。沒有onClearIconTap,這將無法工作。我會很高興被證明是錯誤的...感謝您的答案! – Hoopes

+0

這也是一個很好的解決方案。是的,只有在useClearIcon爲true的情況下才有可能。 :) – herkulano

+0

我已將onClearIconTap覆蓋添加到代碼中。 – herkulano

1

對於煎茶觸摸2.0用戶:

如果您使用新的MVC結構,你可以在控制器初始化

this.control({  
    '#yourTextFieldId clearicon': { 
      tap: function(){console.log('ClearICON tapped');} 
    } 
.... 
)}; 
1

的問題用這個是小X不會被加入煎茶。這是html5「搜索」輸入的一個特性。要捕獲此事件,您需要查找搜索事件。我該如何解決,這是我編輯煎茶-touch.js

我修改 -

if (this.fieldEl) { 
     this.mon(this.fieldEl, { 
      focus: this.onFocus, 
      blur: this.onBlur, 
      keyup: this.onKeyUp, 
      paste: this.updateClearIconVisibility, 
      mousedown: this.onBeforeFocus, 
      scope: this 
     }); 

是 -

if (this.fieldEl) { 
     this.mon(this.fieldEl, { 
      focus: this.onFocus, 
      blur: this.onBlur, 
      keyup: this.onKeyUp, 
      paste: this.updateClearIconVisibility, 
      mousedown: this.onBeforeFocus, 
      search: this.onSearch, 
      scope: this 
     }); 

Ext.form.Text = Ext.extend內(分機。 form.Field,{...

現在在我的searchfield的實現中,我可以創建一個名爲onSearch的函數,它將在調用「search」事件時調用。請注意,「search」事件不僅被稱爲爲X但f或者像輸入鍵一樣的東西。底線是sencha touch 1.1根本不檢查這個事件,這是X發生事件的唯一時間,所以唯一的解決方法是修改sencha-touch.js。

+0

請注意,沒有必要實際改變sencha-touch.js文件中的內容。因爲這使得更新到Sencha庫的更新版本非常困難。最好在自己的文件中覆蓋功能。因爲這是所有的JavaScript,所以這樣做沒有問題。 – Odi