Как завершить выполнение скрипта на jquery?

209
21 июля 2018, 12:20

В модальном окне с 2 input формами подключен ajax запрос на перехват нажатия кнопки отправки и пост запросом передает данные в бд. Проблема в том что скрипт не завершается. А висит и при следующим вызове модального окна он отработает уже 2 раза, вызвав еще раз отработает 3 раза и т.д. В консоле сам скрипт и висит.

Модальное окно

<?php
use kartik\widgets\DateTimePicker;
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/** @var $shipping app\models\Courier */
/** @var $model app\models\Zakaz */
?>
<div class="zakaz-reminderForm">
    <?php $form = ActiveForm::begin([
        'id' => 'shippingZakaz',
    ]); ?>
    <?= $form->field($comment, 'id_user')->hiddenInput(['value' => Yii::$app->user->id])->label(false) ?>
    <?= $form->field($comment, 'id_zakaz')->hiddenInput(['value' => $model])->label(false) ?>
    <?= $form-> field($comment, 'comment')->textInput(['placeholder' => 'Что', 'class' => 'inputForm', 'style' => 'float:left'])->label(false) ?>
    <?= $form->field($comment, 'date')->widget(DateTimePicker::className() ,[
        'pluginOptions' => [
            'autoclose'=>true,
            'startDate' => 'php Y-m-d H:i:s',
            'todayBtn' => true,
            'todayHighlight' => true,
        ],
        'options' => [
            'placeholder' => 'Срок',
        ],
    ])->label(false) ?>
    <div class="form-group">
        <?= Html::submitButton('Отправить', ['class' => 'action']) ?>
    </div>
    <?php ActiveForm::end(); ?>
    <?php
    $js = <<<JS
    $('body').on('beforeSubmit', 'form', function(){
   var data = $(this).serialize();
   $.ajax({
      url: '/frontend/web/comment/create-reminder?id=$model', 
      type: 'POST',
      data: data,
      success: function(res){
         console.log(res);
      },
      error: function(){
         alert('Error!');
      }
   });
   $('.trigger success-trigger').trigger('click');
   $('#modalReminder').modal('hide'); //закрытие модального окна.
/*   alert('Напоминание создано!');*/
   return false;
     });
JS;
    $this->registerJs($js);
    ?>
</div>

Вот так выглядит консольное окно:

Кнопкой вызывается скрипт открытия модального окна

`function modalView(button, modal) {
        $('body').on('click', button, function(e){
            e.preventDefault();
            $(modal).modal('show')
                .find('.modalContent')
                .load($(this).attr('value'));
        });
    }`

Который вызывает

` <?php Modal::begin([
        'id' => 'modalReminder',
        'header' => '<h2>Поставить напоминание</h2>'
    ]);
    echo '<div class="modalContent"></div>';
    Modal::end(); ?>`
Answer 1

Надо после закрытия модального окна прописывать снятие обработчика события. $('#modalReminder').off('beforeSubmit', 'form') Плюс лучше вешать обработчик не на body, а на модальное окно.

READ ALSO
Перебор свойств обьекта и мутация [дубликат]

Перебор свойств обьекта и мутация [дубликат]

На данный вопрос уже ответили:

150
MarkerClusterer не видит функцию getPosition()

MarkerClusterer не видит функцию getPosition()

Вывожу на карту фотографии в виде маркеров, которые необходимо кластеризироватьВыводит ошибку: Uncaught TypeError: marker

204
Merge записей с CASCADE ForeignKey

Merge записей с CASCADE ForeignKey

Допустим есть две записи в таблице userТак как это одна из основных таблиц в системе, на которой завязанны множество других таблиц, триггеров...

179
Почему тормозит INFORMATION_SCHEMA

Почему тормозит INFORMATION_SCHEMA

Собственно говоря есть у меня огромная база, на несколько террабайтХочу вытащить FK для нее, где-то таким запросом

238