jQuery对话框的一个问题

An issue with jQuery dialog

本文关键字:一个 问题 对话框 jQuery      更新时间:2023-09-26

假设我有以下链接:

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

,下面是confirmDelete函数:

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

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

问题:我有数百个类似的链接在我的平台上,我们决定把所有的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对话框,但问题是,因为这是不可能从一个处理程序,如对话框返回的东西,我不知道如何告诉我的按钮在文件中,用户选择了ok或取消。

基本上我不知道如何把它们联系在一起。

请帮

问题是由于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/

可能是这样的:

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

可能会更复杂一些因为你使用了相对url但是你可以使用window.location.protocol + window.location.port + window.location获得当前的url。Window.location.host + window.location.pathname