как включить ввод в окне расширенного поиска jqgrid - PullRequest
3 голосов
/ 11 марта 2012

Нажатие кнопки поиска на панели инструментов jqgrid открывает окно расширенного поиска. Нажатие клавиши ввода не запускает поиск. Чтобы начать поиск, нужно нажать кнопку поиска.

Как разрешить нажатие клавиши ввода, чтобы начать поиск, как при нажатии на кнопку поиска?

1 Ответ

6 голосов
/ 12 марта 2012

Чтобы осуществить поиск по , введите , необходимо выполнить привязку к событию keydown к любым полям ввода и принудительно выполнить поиск по Ввести .Если вы включите jQuery UI jquery-ui.min.js, то вы можете использовать $.ui.keyCode.ENTER вместо 13 для лучшей читабельности кода.

Код может быть как

$.extend($.jgrid.search, {
    // ... some other default which you use
    afterRedraw: function (p) {
        var $form = $(this), formId = this.id, // fbox_list
            bindKeydown = function () {
                $form.find("td.data>.input-elm").keydown(function (e) {
                    if (e.which === $.ui.keyCode.ENTER) {
                        $(e.target).change();
                        $("#" + $.jgrid.jqID(formId) + "_search").click();
                    }
                });
            },
            oldOnChange = p.onChange,
            myOnChange = function (param) {
                var $input = $form.find("td.data>.input-elm"), events;
                oldOnChange.call(this, param);
                if ($input.length > 0) {
                    events = $._data($input[0], "events");
                    if (events && !events.keydown) {
                        bindKeydown();
                    }
                }
            };
        p.onChange = myOnChange;
        bindKeydown.call(this);
    }
});

* 1013демоверсия демонстрация кода в реальном времени.

...