Нажатие «enter» в сгенерированном ExtJS окне поиска не работает в IE - PullRequest
1 голос
/ 16 ноября 2011

Я унаследовал некоторый код, и я пытаюсь выделить ошибку, которую мы обнаружили только в 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 Ответ

1 голос
/ 16 ноября 2011

Возможно, это проблема области действия, попробуйте изменить определение 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...