0

假设我有以下链接:

<a onclick="confirmDelete()" href="delete.do&xyz">Delete user</a>

以下是confirmDelete函数:

function confirmDelete()
{
   if(!confirm("delete user?"))
    {
     return false;
    } else 
    {
     return true;
    }
}

基本上,当点击链接时,它会检查用户是选择确定还是取消,然后根据它执行。

问题:我的平台上有数百个类似的链接,我们决定将所有的 javascript 警报转为 jquery 对话框。

我使用以下内容以某种方式覆盖警报:

$(function(){

window.confirm = function(message) {
          $('#overrideAlert').text(message).dialog({
              resizable: false,
              modal: true,
              buttons: {
              "Ok": function() {
              $( this ).dialog( "close" );

              },
              Cancel: function() {
              $( this ).dialog( "close" );

              }
            }
        });
  };
});

它工作正常,警报以 jquery 对话框的形式出现,但问题是因为无法从对话框之类的处理程序返回某些内容,我不知道如何在字段中告诉我的按钮,用户选择确定或取消。

基本上我不确定如何将它们链接在一起。

请帮忙

4

2 回答 2

1

问题是由于 javascript 异步性质。当您使用 jQuery 时。可以试试下面的方法。

$('a[onclick="confirmDelete()"]')
      .attr('onclick','')
      .click( function(){

         var anch = this,
             message = "delete user?";

          $('#overrideAlert').text(message).dialog({
              resizable: false,
              modal: true,
              buttons: {
              "Ok": function() {
                   $( this ).dialog( "close" );
                   alert( "window.location=" + anch.href ); 
              },
              Cancel: function() {
              $( this ).dialog( "close" );

              }
            }
        });

        return false ;
});

我做了jsfiddle http://jsfiddle.net/wB389/

于 2013-05-02T06:43:29.897 回答
0

也许像这样:

"Ok": function() {
window.location=deleteURL;
$( this ).dialog( "close" );
},

这可能有点复杂,因为您使用相对 url,但您可以使用 window.location.protocol + window.location.port + window.location 获取当前 url。window.location.host + window.location.pathname

于 2013-05-02T06:24:59.027 回答