Оператор поиска jqGrid не определен - PullRequest
1 голос
/ 21 февраля 2011

Я использую встроенную функцию поиска с jqGrid и начал получать некоторые ошибки на стороне сервера для запроса, который выполняется для выполнения поиска.Я сузил это до параметров фильтра, которые jqGrid передает серверу:

{
   "groupOp":"AND",
   "rules":[
      {
         "field":"FOO",
         "op":"ge",
         "data":"181"
      },
      {
         "field":"FOO",
         "op":"undefined",
         "data":"196"
      }
   ]
}

Как вы можете видеть, оператор поиска во втором объекте имеет значение «undefined» - что странно, поскольку нетпустая / пустая опция при выборе поисковых операторов.Кто-нибудь видел это раньше?Это известная проблема?Я вообще не могу воспроизвести его на своем конце, поэтому мне интересно, есть ли что-то «особенное», что делает мой пользователь, чтобы вызвать это.Я использую jqGrid 3.8.2 с jQuery 1.4.2.

Обновление: я могу воспроизвести ошибку в IE 7. Кажется, что добавление второго параметра к поисковому запросу приводит к неопределенному оператору в этомbrowser.

Обновление 2: кажется, это должно было быть исправлено в jqGrid 3.6 согласно примечаниям к выпуску:

Исправление searchFilter в IE7 и IE6, чтобы он не возвращал неопределенное значение, когда больше чемпоиск по одному полю.

Это явно ошибка.Я собираюсь закрыть вопрос здесь.

1 Ответ

2 голосов
/ 21 февраля 2011

Проблема и способ ее решения описаны здесь . Основная проблема - ошибка jQuery . В качестве обходного пути вы должны включить следующий код на своей странице

// we use workaround from http://www.trirand.com/blog/?page_id=393/bugs/in-multiple-search-second-and-subsequent-ops-are-sent-as-undefined-in-ie6/
// to fix the bug in the jQuery.clone (see http://bugs.jquery.com/ticket/6793 and
// dscussion on the http://api.jquery.com/clone/
$.event.special.click = {
    setup: function() {
        if ($(this).hasClass("ui-search")) {
            $(this).bind("click", jQuery.event.special.click.handler);
        }
        return false;
    },
    teardown: function() {
        $(this).unbind("click", jQuery.event.special.click.handler);
        return false;
    },
    handler: function(event) {
        //$(".ui-searchFilter td.ops select").attr("name", "op");
        $(".ui-searchFilter td.ops select").filter(function () {
            return $(this).css("display") != "none";
        }).attr("name", "op");
    }
};

В настоящее время разрабатывается новый плагин MultiSelect, у которого нет таких проблем (см. Дополнительную информацию здесь ). Вы можете скачать новую бета-версию с GitHub . В мой недавний ответ я включил демонстрацию, в которой использовался новый плагин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...