Как реализовать отправку формы в виджете GridView от Kartik при наступлении javaScript события onblur или нажатии Enter?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
webgrig
Сообщения: 163
Зарегистрирован: 2015.10.29, 21:34

Как реализовать отправку формы в виджете GridView от Kartik при наступлении javaScript события onblur или нажатии Enter?

Сообщение webgrig »

Сначала скрываю все кнопки управления в inline-виджете - "Перезагрузка, Отправка, Закрыть"
для этого пишу в site.css следующее:

Код: Выделить всё

.kv-editable-reset, .kv-editable-submit, .kv-editable-close{
    display: none;
}
затем в настройках Editable добавляю параметр 'pluginEvents' с обработчиком 'editableChange':

Код: Выделить всё

[
    'class'=>'kartik\grid\EditableColumn',
    'attribute'=>'title',
    'hAlign' => GridView::ALIGN_CENTER,
    'vAlign' => GridView::ALIGN_MIDDLE,
    'width' => '120px',
    'contentOptions' => [
        'class' => ['editableInputBlock', 'input'],
    ],
    'refreshGrid' => true,
    'editableOptions' => [
        'asPopover' => false,
        'inputType' => Editable::INPUT_TEXT,
        'pluginEvents' => [
            "editableChange" => "function(event, val){
                $(this).find('form').find('.kv-editable-submit').click();
            }",
        ],
    ],
    'filterType' => GridView::FILTER_SELECT2,
    'filterWidgetOptions' => [
        'data' => Languages::getFilterArr('title', 'title'),
        'pluginOptions'=>[
            'escapeMarkup' => $escape,
            'placeholder' => 'Select',
            'multiple' => true,
        ],
    ],
],
затем в main.js прописываю обработчик события blur в котором инициализирую событие change() для текущего input:

Код: Выделить всё

$('.kv-editable-input').bind('blur', bindBlurField);
function bindBlurField(e) {
	$(this).change();
};
теперь при срабатывании onblur я получаю бесконечный цикл на уровне js, который пытается добавть в мой input после текста множество тире, и при этом ни какой отправки не происходит.

Подскажите пож. что я делаю не так?
Ответить