1

タブ間を切り替えるときにフォームが汚れていないかどうかを確認しようとしています。フォームが汚れている場合は、アラートを表示します。

このプラグインを使用しています: https://github.com/snikch/jquery.dirtyforms

外部ページに移動しようとすると (ここで警告が表示されます)、Ii は正常に動作しますが、タブ (ブートストラップ) を切り替えると何も起こりません。フォームが汚れている場合にリッスンする特別なクラス (".chkChange") を作成しましたが、タブをクリックしても何も起こりません。タブは次のようになります。

<li class="setup-conditions"><a data-toggle="tab" class="chkChange" href="#setup-conditions">Procedure</a></li>

そして、このスニペットでフォームが汚れているかどうかを確認できますが、ダーティフォームでアラートビルドをトリガーするには助けが必要です:

$('#myTab li a').click(function () {
    if ($('form').dirtyForms('isDirty')) {
        //alert("Form is dirty");
    }
});

そして、私が言ったように、同じクラスを別の(外部)リンクに配置すると、何かが変更されたかどうかを確認するプロンプトが表示されます-ボットはタブにありません。

4

1 に答える 1

1

この場合、イベント バインディングをカスタマイズして、クリック ハンドラーをリンクにアタッチできます。

$(document).bind('bind.dirtyforms', function (ev, events) {
    var originalBind = events.bind;

    events.bind = function (e) {
        $('#myTab li a').on('click', events.onAnchorClick);
        originalBind(e);
    };
});

ダーティフォームは正しく

  1. フォームが汚れていないか確認する
  2. 汚れている場合は、クリックイベントを防ぎます
  3. ダイアログを表示
  4. ユーザーが続行することを決定した場合、クリックイベントを再起動します

HREF タグがないため、Dirty Forms はアンカー タグを自動的に無視します。これはコミュニティによって提供された機能で、HREF を持たないアンカー タグを監視するという議論があるようです。

アップデート

デフォルトの動作は2.0.0-beta00005で変更され、デフォルトで HREF タグのないリンクが含まれるようになりました。これで修正されるはずなので、イベントを添付する必要はありません。ignoreSelectorただし、使用しているライブラリによっては、監視を停止するためにダーティ フォームにを追加する必要がある場合があります。

$('form').dirtyForms({ ignoreSelector: 'a.some-class:not([href])' });
于 2015-09-15T23:12:33.317 に答える