0

フォームの変更を監視し、ページを離れる前にユーザーに警告したかったのです。だから私はここにある汚れたフォームプラグインを使いました

これは私が試したコードです

  <?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;
use app\models\Countries;
use yii\helpers\ArrayHelper;

/* @var $this yii\web\View */
/* @var $model app\models\Organizations */
/* @var $form yii\widgets\ActiveForm */
?>

<link rel="stylesheet" href="<?php echo Yii::$app->request->baseUrl;?>/css/userHome.css">
<script type="text/javascript" src="//cdn.jsdelivr.net/jquery.dirtyforms/2.0.0-beta00005/jquery.dirtyforms.min.js"></script>
<div class="organizations-form">
    <h2>Update Billing Address</h2><br>
    <div class="col-md-10 col-md-offset2">

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


    <?= $form->field($model, 'bill_name')->textInput(['maxlength' => true]) ?>


    <?= $form->field($model, 'bill_address')->textInput(['maxlength' => true]) ?>


    <?= $form->field($model, 'bill_country_id')->dropDownList(ArrayHelper::map(Countries::find()
    ->all(), 'id', 'name'),['prompt'=>'Choose a Country'])->label('Select Country')  ?>


    <?= $form->field($model, 'bill_state')->textInput(['maxlength' => true]) ?>


    <?= $form->field($model, 'bill_city')->textInput(['maxlength' => true]) ?>


    <?= $form->field($model, 'bill_postal')->textInput(['maxlength' => true]) ?>



    <?= $form->field($model, 'bill_mobile')->textInput(['maxlength' => true]) ?>



    <div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-primary' : 'btn btn-success']) ?>
    </div>

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

</div>
</div>

使用したスクリプト

<script>
jQuery(document).ready(function($){ 

    // Enable on all forms
    $('form').dirtyForms();
});
</script>   

保存せずに他のページやリンクに移動しようとすると、ポップアップ メッセージが表示されます。しかし、それでもメッセージを送信しようとすると、ポップアップが表示されます。どうしてこんなことに?

4

2 に答える 2

1

しかし、それでもメッセージを送信しようとすると、ポップアップが表示されます。どうしてこんなことに?

<input type="submit">Dirty Forms は、タグを使用して送信が発生したときに無視しようとします。ただし、JavaScript を使用すると、他の種類のフォーム タグ (アンカー タグなど) をクリックしてフォームを送信することもできます。

Dirty Forms はデフォルトで、アンカータグのクリックをページからの移動の試みとして解釈します。他の目的でアンカー タグを使用する JavaScript ウィジェットを使用している場合は、アンカー タグを に配置するかignoreSelector、 を追加するignoreClassか、またはignoreClass. 詳細については、無視するを参照してください。

于 2016-02-21T14:06:38.403 に答える