我继承了一些代码,我试图找出我们在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();
答案 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);
}