按"输入"在ExtJS生成的搜索框中无法在IE中运行

时间:2011-11-15 21:49:10

标签: extjs input triggers

我继承了一些代码,我试图找出我们在IE中发现的错误。 ExtJS用于生成搜索框。 Ext创建一个<img>,作为搜索的触发器。

在IE中,您可以点击img提交搜索。但是,如果按Enter键,则会激活在页面下方显示的onClick按钮。代码如下。如何确保分配“特殊键”以触发搜索? (我有点不清楚它为什么在非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();

1 个答案:

答案 0 :(得分: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);
}