2011-11-15 23 views
1

我繼承了一些代碼,我試圖找出僅在IE中找到的錯誤。 ExtJS用於生成一個搜索框。 Ext創建一個<img>,它充當搜索的觸發器。在ExtJS生成的搜索框中按下「enter」不能在IE中工作

在IE中,您可以點擊img來提交搜索。但是,如果按下回車鍵,它會激活一個onClick按鈕,它出現在頁面的更下方。下面的代碼。我怎樣才能確保'specialkey'被分配來觸發搜索? (我有點不清楚爲什麼它在非IE瀏覽器中工作正常)。

Ext.onReady(function(){ 
// create user extensions namespace (Ext.ux.form) 
Ext.namespace('Ext.ux.form'); 

// Ext.ux.form.SearchableTextField constructor 
Ext.ux.form.SearchableTextField = function(config) { 
    // call parent constructor 
    Ext.ux.form.SearchableTextField.superclass.constructor.call(this, config); 
    // associate ENTER key with button click 
    this.on('specialkey', function(f, e) { 
     if (e.getKey() == e.ENTER) { 
      this.onTriggerClick(); 
     } 
    }, this); 
} // end of Ext.ux.form.SearchableTextField constructor 

// extend 
Ext.extend(Ext.ux.form.SearchableTextField, Ext.form.TriggerField, { 
    triggerClass: 'x-form-search-trigger', 
    onTriggerClick : function() { 
     alert('customize in you app code'); 
    } 
}); // end of extend 
var tb = new Ext.Toolbar({ 
    renderTo: 'searchbox' 
}); 

var search = new Ext.ux.form.SearchableTextField({ 
    triggerClass:'x-form-search-trigger banner-searchbox-submit', 
    id:'banner-searchbox', 
    width:100, 
    onTriggerClick: function(){ 
     var x = this.getRawValue(); 
     this.setRawValue(''); 
     document.forms[0].method = 'post'; 
     document.forms[0].action = 'find.php?site=<?=$site?>&lang=<?=$lang?>'; 
     document.forms[0].qrystring.value = x; 
     var pN = document.getElementById("pageNum"); 
     if (pN != null) { 
      document.forms[0].pageNum.value = 1; 
     } 
     document.forms[0].submit(); 
    } 
}); 
var searchPat = tb.add('-','<?=$menuPatients[$lang][2]?>: ', ' ', search); 
tb.doLayout(); 
+0

原來,我們解決了這個問題不是通過改變ExtJS的,而是通過切換該更遠出現向下的按鈕DOM(並在IE中被觸發)。而不是切換到使用

回答

1

這可能是一個範圍問題,請嘗試更改您的Ext.ux.form.SearchableTextField定義這個

Ext.ux.form.SearchableTextField = function(config) { 
    var me = this; 
    // call parent constructor 
    Ext.ux.form.SearchableTextField.superclass.constructor.call(me, config); 
    // associate ENTER key with button click 
    me.on('specialkey', function(f, e) { 
    if (e.getKey() == e.ENTER) { 
     me.onTriggerClick(); 
    } 
    }, me); 
} 
+0

感謝您的支持。沒有解決問題,但現在我看得更遠了,這絕對是一個範圍問題。有什麼方法可以指定onTriggerClick()應該去哪裏? – Voodoo

+0

作爲一個快速入侵你可以使用'Ext.getCmp('idOfComponent')。onTriggerClick();' – JamesHalsall

+0

雖然這並沒有解決我們的問題,但它確實證明是有用的。關於我們原來的問題,請參閱我的記錄。 – Voodoo