4

次のコードを使用して、jquery ui ダイアログによるデフォルトの JavaScript 確認を使用します。

jQuery.extend({
    confirm: function(message, title, okAction) {
        jQuery("<div></div>").dialog({
            // Remove the closing 'X' from the dialog
            open: function(event, ui) { jQuery(".ui-dialog-titlebar-close").hide(); }, 
            buttons: {
                "Ok": function() {
                    jQuery(this).dialog("close");
                    return true;
                },
                "Cancel": function() {
                    jQuery(this).dialog("close");
                    return false;
                }
            },
            close: function(event, ui) { jQuery(this).remove(); },
            resizable: false,
            title: title,
            modal: true
        }).text(message);
    }
});

jQuery.confirm(
        "LogOut",
        "Do you want to log out",
        function() { 
        });

ここで、ログアウト アクションで同じコードを使用する必要があります。コード内のJavaScript確認を置き換えることができるように。

<a class="homeImage" onclick="return confirm('Do you want to logout?');" href="/future/myhome/head?$event=logout">LOG OUT</a>

私が今直面している問題は、確認を別の関数に置き換え、その戻り値が決定を下すのを待つと、ダイアログボックスが変数に値を返さないことです。これらの 2 つの関数は同時に実行されます (アラートが表示されますが、href ターゲットにも送信されます)。メソッドが true または false の値を返し、href ターゲットに進む方法はありますか。

参考: jQuery Extend , jQuery UI Replacement for alert
related question: js override confirm

4

3 に答える 3

2

問題は、デフォルトのconfirmダイアログが同期であり、ブラウザー UI 全体をブロックすることです。JQuery ダイアログは非同期であり、UI をブロックしません (レンダリングする必要があるため)。

したがって、あなたの問題に対する答えは次のとおりです。変更する必要があります:

         buttons: {
            "Ok": function() {
                window.location = "/future/myhome/head?$event=logout"
            },

 <a class="homeImage" onclick="return jQuery.confirm('Do you want to logout?');return false;" href="/future/myhome/head?$event=logout">LOG OUT</a>
于 2013-10-15T06:57:37.917 に答える
0

個人的には、関数の条件付き実行やフォームの投稿に confirm more を使用しています...

したがって、あなたの例を使用すると、次の小さな変更を加えたでしょう。

buttons: {
         "Ok": function() {
              jQuery(this).dialog("close");
              okAction();  
         },

そして、次のように Confirm を呼び出します。

onclick="jQuery.confirm('Do you want to logout?','Confirm:',function(){window.location='/future/myhome/head?$event=logout'}); return false;">LOG OUT</a>
于 2014-04-29T03:14:28.087 に答える