t-alexashka
@t-alexashka
Сразу пишу legacy код

Gridview: проблемы с select2 фильтром в режиме multiple?

Привет друзья. Ставлю в gridview фильтр select2-виджет, в режиме выбора нескольких значений. Без pjax все работает нормально, можно выбрать несколько значений из списка и все обновляется как надо. Как только я включаю pjax в gridview - этот фильтр начинает глючить, т.к. сам поиск значений получается находится в td ячейке для фильтров, и срабатывает как фильтр при потере фокуса, даже если там написана крякозябра которой нет в списке самого селекта.

Вопрос - как мне игнорировать change этого поля внутри select2? чтобы gridview не думала что пора применять фильтр. нужно чтобы он применялся только при выборе конктретного значения из предглагаемых селектом вариантов.

5c48b30ec38f9961537296.png
вот из за этого поля gridview думает что это поле с фильтром уже, и надо его применить при потере фокуса.

Кто реально решит проблему - отдам свои кровные 500р. а то целый день уже пытаюсь пофиксить эту хрeнь, и нет ниче путного в гугле, как будто только у меня эта проблема.
  • Вопрос задан
  • 440 просмотров
Решения вопроса 1
t-alexashka
@t-alexashka Автор вопроса
Сразу пишу legacy код
Решение:

$(function () {
	$(document).on('change.yiiGridView keydown.yiiGridView click.yiiGridView', '#grid-orders-filters input[type="search"]', function (e) {
		e.preventDefault();
		e.stopPropagation();
		e.stopImmediatePropagation();
		return false;
	});
});


Не забудьте заменить #grid-orders-filters на id своего gridview.

Смысл - заглушить всплывание ВСЕХ событий *.gridView с этого поля ввода. Надеюсь кому нибудь поможет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Я не экспериментировал с этим моментом, но видятся следующие варианты:
1. Следите за кликом, открывайте в модалке select 2, что бы не срабатывал скрипт gridView
2. Можно попробовать зацепиться за события которые генерит js gridView, вот тут обсуждалось:
https://github.com/yiisoft/yii2/issues/14386
3. Можно отключить вообще сабмит при потери фокуса в конфиге gridView: https://www.yiiframework.com/doc/api/2.0/yii-grid-...
Соответственно для других ячеек реализовать ручками.
4. Можно попробовать сменить селектор, что бы перестал работать штатный js (не уверен. но можно попробовать):
https://www.yiiframework.com/doc/api/2.0/yii-grid-...
https://www.yiiframework.com/doc/api/2.0/yii-grid-...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы