按「;输入“;在ExtJS中生成的搜索框在IE中不工作

按「;输入“;在ExtJS中生成的搜索框在IE中不工作,extjs,input,triggers,Extjs,Input,Triggers,我继承了一些代码,我试图分离出一个我们只在IE中发现的bug。ExtJS用于生成搜索框。Ext创建一个充当搜索触发器的 在IE中,您可以单击img提交搜索。但是,如果按enter键,它将激活一个onClick按钮,该按钮将显示在页面下方更远的位置。代码如下。如何确保指定“specialkey”来触发搜索?(我有点不清楚为什么它在非IE浏览器中可以正常工作) Ext.onReady(函数(){ //创建用户扩展命名空间(Ext.ux.form) Ext.namespace('Ext.ux.form

我继承了一些代码,我试图分离出一个我们只在IE中发现的bug。ExtJS用于生成搜索框。Ext创建一个充当搜索触发器的

在IE中,您可以单击img提交搜索。但是,如果按enter键,它将激活一个onClick按钮,该按钮将显示在页面下方更远的位置。代码如下。如何确保指定“specialkey”来触发搜索?(我有点不清楚为什么它在非IE浏览器中可以正常工作)

Ext.onReady(函数(){
//创建用户扩展命名空间(Ext.ux.form)
Ext.namespace('Ext.ux.form');
//Ext.ux.form.SearchableTextField构造函数
Ext.ux.form.SearchableTextField=函数(配置){
//调用父构造函数
Ext.ux.form.SearchableTextField.superclass.constructor.call(this,config);
//将输入键与按钮单击关联
this.on('specialkey',函数(f,e){
如果(e.getKey()==e.ENTER){
这个.onTriggerClick();
}
},这个);
}//Ext.ux.form.SearchableTextField构造函数的结尾
//延伸
Ext.extend(Ext.ux.form.SearchableTextField、Ext.form.TriggerField、{
triggerClass:'x-form-search-trigger',
OnTiggerClick:函数(){
警报(“在应用程序代码中自定义”);
}
});//扩展结束
var tb=新的外部工具栏({
renderTo:“搜索框”
});
var search=new Ext.ux.form.SearchableTextField({
triggerClass:'x-form-search-trigger横幅搜索框提交',
id:'banner-searchbox',
宽度:100,
OnTiggerClick:函数(){
var x=this.getRawValue();
此.setRawValue(“”);
document.forms[0]。方法='post';
document.forms[0]。操作='find.php?site=&lang=';
document.forms[0].qrystring.value=x;
var pN=document.getElementById(“pageNum”);
如果(pN!=null){
document.forms[0].pageNum.value=1;
}
document.forms[0]。提交();
}
});
var searchPat=tb.add('-',':','',search);
tb.doLayout();

这可能是范围问题,请尝试将
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);
}

这可能是范围问题,请尝试将
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);
}

谢谢。我没有解决这个问题,但现在我进一步看,这显然是某种范围问题。是否有某种方法可以指定OnTiggerClick()应该放在哪里?作为一种快速攻击,您可以使用
Ext.getCmp('idOfComponent')。OnTiggerClick()
虽然这并没有解决我们的问题,但它确实被证明是有用的。请参阅我在原始问题上关于我们所做更改的注释。感谢这一点。我没有解决问题,但现在进一步看,这显然是某种范围问题。是否有某种方法可以指定OnTiggerClick()的位置应该去吗?作为一种快速的破解方法,您可以使用
Ext.getCmp('idOfComponent')。onTriggerClick()
虽然这并没有解决我们的问题,但它确实很有用。请参阅我在原始问题中关于我们更改了什么的注释。结果表明,我们并不是通过更改extjs来解决这个问题,而是通过切换显示在DOM下方(并且在IE中被触发)的按钮来解决的。而不是切换到使用,这解决了我们的问题。事实证明,我们并不是通过更改extjs来解决这个问题,而是通过切换显示在DOM下方的按钮(在IE中被触发)。而不是切换到使用,这解决了我们的问题。