Как добавить слушателя onchange в флажок на Yii2, чтобы отправить форму после изменения - PullRequest
0 голосов
/ 04 марта 2019

Я хочу отправлять форму поиска всякий раз, когда ставлю или снимаю флажки.У меня есть следующий код, но я не могу заставить его работать ... он довольно прост, я думаю, но не могу обойти его!

<?= $form->field($searchModel, 'pets_allowed')->checkbox(['options'=>['onchange'=>'"this.form.submit();}"']]); ?> 

Заранее спасибо:)

1 Ответ

0 голосов
/ 04 марта 2019

Удалите двойные кавычки " из выражения '"this.form.submit();}"' и }.Затем вам нужно передать массив опций, а не ключевое слово options, см. Документ API для флажок

, поэтому оно должно быть

<?= $form->field($searchModel, 'pets_allowed')->checkbox(['onchange' => 'this.form.submit()']); ?>

Но проблемав приведенном выше сценарии это означает, что он будет отправлять форму, даже если вы снимите ее, поэтому лучшим способом будет проверка состояния флажка.я бы использовал jquery и heredoc , как показано ниже, чтобы вы могли иметь удобочитаемость в вашем коде и удобство редактирования.

<?php 

use yii\widgets\ActiveForm;

$js = <<<JS
    $("#pets_allowed").on('change',function(){

        // to submit only if the checkbox is checked otherwise 
        // you can remove the check and just use the submit statement
        if($(this).is(':checked')){
            $(this).closest('form').submit();
        }

    });
JS;

    $this->registerJs($js, \yii\web\View::POS_READY);
?>

<?php $form = ActiveForm::begin();?>

<?= $form->field($searchModel, 'pets_allowed')->checkbox(['id'=>'pets_allowed']); ?> 

<?php ActiveForm::end();?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...