jqGrid navGrid поиск отправить при нажатии клавиши Enter не работает - PullRequest
1 голос
/ 26 октября 2010

Я хотел бы иметь возможность вызывать кнопку поиска в диалоговом окне поиска при нажатии клавиши «Ввод / Возврат».К сожалению, опция 'savekey' не отправляет форму, как и при редактировании и добавлении редактирования формы.

Вот фрагмент кода, который я использую.

$("#list").jqGrid('navGrid', '#pager', 
    {edit: true, add: true, del: true, search: true, view: true},

    ...

    {
        caption: "Search",
        closeAfterSearch: true,
        closeOnEscape: true,
        sopt: ['cn','eq'],
        savekey: [true, 13] 
    },

Вот ссылка на документацию form_editing, с которой я ознакомился:

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing&s[]=savekey

Вот ссылка на документацию по поиску в одном поле:

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:singe_searching&s[]=navgrid

Я не могу найти ничего, чтобы предположить, что эта функция существует, но мне кажется, что это просто.Как всегда, любая помощь или направление очень ценится.

Ответы [ 4 ]

2 голосов
/ 26 октября 2010

Мне кажется, что проблема может быть решена, если вы замените параметр savekey: [true, 13], который действительно не работает для поиска следующих beforeShowSearch и onClose дескриптор события

beforeShowSearch: function(form){
    form.keydown(function(e) {
        if (e.which == 13) {
            $(".ui-search", form).click();
        }
    });
},
onClose: function(form){
    form.unbind('keydown');
}

Этот метод будет работать не только для поиска по одному полю , но и для расширенного поиска .

Если вы хотите, чтобы клавиша «Ввод» работалатолько в полях ввода вы можете заменить form.keydown на $('.vdata',form).keydown и внести соответствующие изменения в unbind.

1 голос
/ 29 сентября 2011

У меня была такая же проблема на FireFox, но вышеупомянутое решение хорошо работало в IE.Чтобы заставить его работать в Firefox, я должен был использовать функцию фокуса вместо щелчка, как показано ниже:

beforeShowSearch: function (form) {
                        form.keydown(function (e) {
                            if (e.which == 13) {
                                $("#fbox_list_search").focus();
                            }
                        });
                    },
0 голосов
/ 28 марта 2014

Попробуйте следующий код. У меня работает:

beforeShowSearch: function(form){
   $(form).keydown(function(e) {
      if (e.keyCode == 13) {
         setTimeout(function() {
            $("#fbox_cust_grid_search").click();
         }, 200);
      }
   });
   return true;
},
onClose: function(form){
   $("#fbox_cust_grid_search").unbind('keydown');
}

Кажется, есть проблема, когда метод click вызывается слишком быстро. Предоставление сетки 200 мс для выполнения того, что он должен сделать, прежде чем поиск, кажется, делает свое дело.

0 голосов
/ 22 сентября 2011

Это было довольно полезно, но я предоставил решение, которое не совсем работает для меня. Я изменил предоставленный код, и теперь он работает, но, похоже, он не передает правильные данные. Всякий раз, когда я нажимаю клавишу ввода, он вводит «0» в поле ввода вместо того, что я фактически вставил туда. По какой-то причине он не публикует searchString. Код, который я использую:

beforeShowSearch: function(form){
  $(form).keydown(function(e) {
    if (e.keyCode == 13) {
      $("#fbox_cust_grid_search").click();
    }
  });
},
onClose: function(form){
  $(form).unbind('keydown');
}

Есть ли у вас, ребята, какие-либо предположения относительно того, что здесь может происходить?

Редактировать: Интересно, что когда я что-то предупреждаю (что-нибудь) прямо перед методом .click (), данные публикуются отлично. Есть идеи?

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