10

alertify.jsすべての確認スクリプトの確認ダイアログとして使用しようとしています。ただし、通常のJSのようにはconfirm機能しません。以下のコードでは、私は決して得ませんreturn true

function aConf ( mes ) {
    alertify.confirm( mes, function (e) {
        return e;
    });
}

<a href="#" onclick="if(aConf(\'Are you sure you wish to remove this?\')) { function(); } return false;">Delete</a>

もちろんaConf、JSに置き換えるとconfirm機能します。では、なぜalertify私にその結果を返送しないのですか?

4

1 に答える 1

11

確認はブロッキング関数であり(true / falseが返されるまでjavascriptは実行されません)、alertifyは非ブロッキングであるため(JSは実行を継続します)。Alertifyはすぐにtrue/falseを返しませんが、代わりに、おそらくすぐにundefinedを返し、ユーザーが[OK]または[キャンセル]をクリックした後、後でコールバック関数を呼び出します。このコールバック関数からの戻り値は、onclickコードの実行がすでに終了しているため(非ブロッキングであるため)、この例では効果がありません。

これを使用していると仮定します:https ://github.com/fabien-d/alertify.js/

これは、戻り値ではなく、コールバック関数で実際に機能する方法です。

alertify.confirm( message, function (e) {
    if (e) {
        //after clicking OK
    } else {
        //after clicking Cancel
    }
});

コードサンプルでは、​​次のようなものを試してみてください。

function performDelete ( a_element ) {
    // perform your delete here
    // a_element is the <a> tag that was clicked
}

function confirmAction ( a_element, message, action ) {
    alertify.confirm(message, function(e) {
        if (e) {
            // a_element is the <a> tag that was clicked
            if (action) {
                action(a_element);
            }
        }
    });
}

<a href="#" onclick="confirmAction(this, 'Are you sure you wish to remove this?', performDelete); return false;">Delete</a>

編集:ユーザーが[OK]をクリックした場合にコールバック関数を呼び出す一般的な確認ダイアログに更新されました。

于 2013-01-18T22:28:58.310 に答える