Yii2 Pjax und ActiveForm beforeSubmit funktioniert nicht nach reload?

Erstelle ich eine Ladeanzeige auf mein submit-button und das anbringen der "start" - Verfahren, um die beforeSubmit Ereignis mit der registerJs Funktion.

Funktioniert es das erste mal richtig, aber nach dem Pjax-container geladen wird, das Ereignis wird nicht ausgelöst, wenn das Formular abgeschickt wird wieder.

Ich lege die gesamte view-Datei in dem Pjax-container, so dass die flash-Nachrichten werden korrekt angezeigt.

Hier ist die main.php layout-Datei snippet:

<?php Pjax::begin([
'id' => 'pjax-container',
'enablePushState' => false,
]); ?>

<?= Alert::widget(); ?>

<?= $content; ?>

<?php Pjax::end(); ?>

Und hier ist die registerJs Funktion, die sich in main.php im Abschnitt:

<?php
$js = <<< 'SCRIPT'
$('#form').on('beforeSubmit', function(){
alert('Submitted...');
//$("#spinner").fadeIn();
});
SCRIPT;
$this->registerJs($js);
?>

Und hier ist die activeForm:

<?php $form = ActiveForm::begin(['id' => 'form', 'options' => ['data-pjax' => true]]); ?>

<?= $form->field($model, 'name')->textInput(['type' => 'text']) ?>

<?= $form->field($model, 'email')->textInput(['type' => 'email']) ?>

<?= $form->field($model, 'subject')->textInput(['type' => 'text']) ?>

<?php
echo $form->field($model, 'message')->textArea(['rows' => 6]);

echo $form->field($model, 'verify_code')->widget(Captcha::className(), [
        'captchaAction' => 'site/captcha',
        'template' => '<div class="row"><div class="col-lg-4">{image}</div><div class="col-lg-6">{input}</div></div>',
]);
?>

<button class="btn btn-success">
<span id="spinner" style="display: none; float:left; margin-right: 26px;">
<?php
echo Spinner::widget([
'pluginOptions' => [
    'top' => '50%',
    'left' => '10px',
    'lines' => 11,
    'length' => 5,
    'width' => 3,
    'corners' => 1,
    'trail' => 100,
    'speed' => 1.25,
    'radius' => 4,
],
]);
?>
</span>
<?php echo $model->isNewRecord ? 'Send Message' : 'Update'; ?>
</button>

<?php ActiveForm::end(); ?>

Ich bin mit dem Kartik Spinner (Details und Demo)

Irgendwelche Ideen auf, warum die beforeSubmit-Ereignis wird nicht ausgelöst, nachdem Pjax laden der Daten-container nach einem erfolgreichen submit?

Dank.

  • Die render-Methode verwenden Sie in Ihren controller? nur render()? oder renderAjax()?
  • Ich war mit der render (), aber habe einen schnellen test mit renderAjax() und das schien zu funktionieren. Hatte ich, um die registerJs () - Funktion, um die aktuelle Datei anzeigen wenn. Und nun ist die flash-Nachrichten zu zeigen. Irgendwelche Ideen?
  • Sorry, das meinte ich zu sagen, dass die flash-Nachrichten nicht zeigen, bis jetzt auf Ajax Last.
  • Also, es war ein Problem mit der render-Funktion. Ich verwende jetzt renderAjax() und es funktioniert Prima. Ich habe, um das verschieben der Pjax und Alarm::widget, um die view-Datei als renderAjax Funktion enthalten nicht-layout und flash-Nachrichten nicht zeigen.
InformationsquelleAutor Mike Pearson | 2015-04-08
Schreibe einen Kommentar