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

Мне очень нравится shell_command за его простоту. Он построен поверх модуля подпроцесса.

Вот пример из документов:

>>> from shell_command import shell_call
>>> shell_call("ls *.py")
setup.py  shell_command.py  test_shell_command.py
0
>>> shell_call("ls -l *.py")
-rw-r--r-- 1 ncoghlan ncoghlan  391 2011-12-11 12:07 setup.py
-rw-r--r-- 1 ncoghlan ncoghlan 7855 2011-12-11 16:16 shell_command.py
-rwxr-xr-x 1 ncoghlan ncoghlan 8463 2011-12-11 16:17 test_shell_command.py
0

0
задан Eric Lehmann 4 March 2019 в 16:40
поделиться

1 ответ

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

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

<?= $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();?>
0
ответ дан Muhammad Omer Aslam 4 March 2019 в 16:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: