2014-09-10 122 views
1

我想從輸入文本字段「workItemTextField」中獲取文本值,但無法使用下面的代碼觸發按鍵事件。rallytextfield上的聽衆

Ext.define('CustomApp', { 
    extend: 'Rally.app.App', 
    componentCls: 'app', 
    _onWorkItemKeyPress: function() { 
     console.log('In _onWorkItemKeyPress'); 
     console.log(this); 
    }, 
    launch: function() { 
     this.add({ 
      title: 'Time Entry', 
      width: 800, 
      padding: 10, 
      bodyPadding: 10, 
      renderTo: Ext.getBody(), 
      layout: { 
       type: 'vbox', 
       align: 'bottom' 
      }, 
      items: [ 
      { 
       xtype: 'rallytextfield', 
       itemId: 'workItemTextField', 
       fieldLabel: 'Work Item ID', 
       labelAlign: 'top', 
       listeners: { 
        scope: this, 
        keypress: this._onWorkItemKeyPress 
       } 
      }] 
     }); 
    } 
}); 

我能得到它的火與此更換聽衆:

listeners: { 
    keypress: { 
     element: 'el', 
     fn: this._onWorkItemKeyPress 
    } 
} 

但它不會返回我期望的那樣。 「this」是textfield,但我無法調用getValue(),並且我期望傳入的屬性(從查看api)不是我期望的。第一個參數是事件,第二個不確定,第三個是html元素。

我正在使用apps/2.0rc3/sdk.js。我已經查看了我可以在網上找到的所有代碼,看起來我正確地做了這件事,但肯定有一些我錯過了。我做錯了什麼?

回答

1

我可以通過使用specialkey設置爲等待ENTER,然後調用_onWorkItemKeyPress(field)來獲得rallytextfield的值。 field.getValue()適用於這種情況。除非您的目標不是獲取用戶輸入的完整值,否則最好不要使用按鍵並等到用戶表示完成輸入。

Ext.define('CustomApp', { 
    extend: 'Rally.app.App', 
    componentCls: 'app', 
    items:{ html:'<a href="https://help.rallydev.com/apps/2.0rc3/doc/">App SDK 2.0rc3 Docs</a>'}, 
    launch: function() { 
     var that = this; 
     that.add({ 
      title: 'My Text', 
      itemId:'mytext', 
      width: 800, 
      padding: 10, 
      bodyPadding: 10, 
      layout: { 
       type: 'vbox', 
       align: 'bottom' 
      }, 
      items: [ 
      { 
       xtype: 'rallytextfield', 
       itemId: 'workItemTextField', 
       fieldLabel: 'Work Item ID', 
       labelAlign: 'top', 
       listeners: { 
        specialkey: function(field, e){ 
         // e.HOME, e.END, e.PAGE_UP, e.PAGE_DOWN, 
         // e.TAB, e.ESC, arrow keys: e.LEFT, e.RIGHT, e.UP, e.DOWN 
         if (e.getKey() == e.ENTER) { 
          that._onWorkItemKeyPress(field); 
         } 
         else{ 
          console.log('?'); 
         } 
        } 
      } 
      }] 
     }); 
    }, 
    _onWorkItemKeyPress:function(field){ 
     console.log('value:',field.getValue()); 
    } 
}); 
+0

謝謝!這樣可行!是的,我將在keypress的函數調用中檢查ENTER,但無法通過任何鍵調用該函數。另外,我並不知道「specialkey」。這將工作我們的偉大。仍然困惑爲什麼「按鍵」聽衆不工作,但這至少讓我通過了我的問題。再次感謝! – 2014-09-11 12:32:23