1

bootbox.jsを実装して標準の javascript 確認アラート ポップアップを置き換える方法をよく理解していないため、支援が必要です。いくつかのスレッドとドキュメントを読みましたが、完全に理解できません。

現在、テンプレートにレコード番号を保持するこのボタン/リンクがあります。

<a href="{% url overseas_experience_details_duplicate overseas_experience_detail.id %}" onclick="if(confirmDuplicate())showProgressAnimation();else return false;">{% trans "Duplicate" %}</a>

これは、bootbox.js に置き換えたい現在の js 関数を呼び出します。

function confirmDuplicate() {
    return confirm("Are you sure?");
}

[OK] オプションをオンにすると、レコードが複製されます (レコードが複製されている間、進行状況を表示するアニメーションが表示されます)。CANCEL オプションを選択すると、何も起こりません。

次のコードを使用してブートボックス アラートを実装しましたが、レコードを複製するブートボックス OK 確認を返す方法がわかりません。

bootbox.js

function confirmDuplicate() {
    bootbox.confirm("Are you sure?", function(result) {
    if (result == true) {

        // not too sure what to insert here to return the bootbox confirm();

    }
});

いくつかの有効な提案をいただければ幸いです

質問への更新

ブートボックスの確認ポップアップが表示されるようになりましたが、「真」または「偽」の確認結果を返すことができません。ここに私の新しいコードがあります:

function confirmDuplicate() {
    bootbox.confirm({
        callback: function(result) {
            if (result) {
                return result;
            }
        }
    }
}

レコードを複製する結果を返すことができないことに不満を感じています。

どんな助けでも素晴らしいでしょう。

4

3 に答える 3

3

次のようなことを試してください:

<a href="whatever" onclick="return myConfirm(this.href)">....

myConfirm = function(url) {
    bootbox.confirm("sure?", function(okay) {
        if(okay)
             location.href = url;
    });
    return false;
}

bootbox.confirmすぐに結果を取得することはできないためfalse、ハンドラーから戻ってリンクがたどられないようにし、コールバック関数で必要なアクションを実行します。

于 2014-05-20T07:53:53.563 に答える
0

私のコメントからあなたの質問への続きは、目立たない jquery バージョンです。

$('.your-link-class').on('click', function(e) {
   e.preventDefault(); //this would be equivalent to the return false in your code
   var self = this;
   bootbox.confirm("Are you sure?", function(result) {
       if (result) {
           // Here you have access to the jquery object of your link with $(self)
           // and you can do stuff like, for example:
           var clone = $(self).clone();
           clone.insertAfter($(self));
       }
    });
});

そしてデモ(そうではありません:デモでは、ブートボックスソースをロードしていないため、代わりに従来のプロンプトを使用しています):

于 2014-05-20T07:58:40.480 に答える