jquery 模拟 confirm 要求使用方法和 window.confirm 一样

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery 模拟 confirm 要求使用方法和 window.confirm 一样相关的知识,希望对你有一定的参考价值。

我找到了一个jquery.confirm.js 插件,功能和我要的是一样的,但是页面效果上就不行了,不能控制,还有就是我现在用的jquery是1.4.4 的,而jquery.confirm.js 是用的1.4.2,哪位能帮帮忙啊,能弹出一个层,有两个按钮就行,之后我可以自己弄,比如说页面上有个<a href='http://www.baidu.com' onclick="调用函数"></a>之后页面等待点击确定按钮跳转到百度
那个jQueryAlertDialogs,不知道你试没试过,他只长了一个confirm的样子,却没有confirm的功能,你试试这样能不能等点击确定按钮之后才跳转到百度,很明显不是,不符合要求,
<script type="text/javascript">
$(document).ready(function()
$("#confirm").click(function()
return jConfirm('Can you confirm this?', 'Confirmation Dialog', function(r)
jAlert('success', 'Confirmed: ' + r, 'Confirmation Results');
);
);
);
</script>
<a href='http://www.baidu.com' id='confirm'>百度</a>

首先我是想重写window.confirm 方法,网上现有的集中插件都不能满足我的要求,其次我使用的是ajax,这几个控件都不能和ajax一起使用,也可能是我没用明白,望指点啊!

几位说的方法我都已经试过了,都不行,都不能满足需要,可能是js/jquery 是不能实现这种方式了!

参考技术A $.confirm = function(msg,func1,func2,w,h) ;

function Confirm(msg,func1,func2,w,h)
var opts = ;
//这里还可以判断msg的长度进行排版,并调整弹出框的大小
install(window.top, opts);
$.DialogData.dialogDiv.find("div[id^='_DialogButtons_']").css('text-align','center')

var win = topWin.$.DialogData.iframeObj.attr('contentWindow');
var doc = win.document;
doc.open();
doc.write("<body></body>") ;
var arr = [];
arr.push("<div><table height='100%' border='0' align='center' cellpadding='10' cellspacing='0'>");
arr.push("<tr><td align='center'><img id='Icon' src='../images/icon_query.gif' width='34' height='34' align='absmiddle'></td>");
arr.push("<td align='left' id='Message' style='font-size:9pt'>"+msg+"</td></tr></table></div>");
var div = $(arr.join(''),doc.body);
$(doc.body).append(div);
doc.close();

//设置响应函数
//如果传递响应函数则执行,否则仅关闭窗口
$.DialogData.dialogDiv.find("input[id^='_ButtonOK_']").bind("click", function()
$.unfunkyUI();
if(func1)
func1();

)
$.DialogData.dialogDiv.find("input[id^='_ButtonCancel_']").bind("click", function()
if(func2)
func2();

) ;


)(jQuery);
参考技术B http://beckelman.net/demos/jQueryAlertDialogs/Default.aspx
不明白的可以在线联系。
不会哦,我就是用的它

<script>jConfirm('您的密码修改成功,是否继续修改?','提示信息',function(r)if(r)location=locationelsehistory.back(););</script>
不想有操作你return false;本回答被提问者采纳
参考技术C jQuery easyui第三方插件,其中的Messager部分已经实现你的要求。

与jquery合并/压缩时jquery Confirm插件不起作用

【中文标题】与jquery合并/压缩时jquery Confirm插件不起作用【英文标题】:jquery Confirm plugin not work when merge/compress with jquery 【发布时间】:2012-04-19 12:20:17 【问题描述】:

我找到this jquery plugin 进行内联确认。我将所有 js 文件压缩/合并为一个以优化 http 请求(这是手册)。现在这个文件的顶部是 jquery Library 1.7.1,然后我放了内联确认插件。因此,当位于带有 jquery 库的文件中时,此插件不起作用。我的问题是什么?

e.x : 正常 : 分开(这个工作)

<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript" src="./js/inline-confirmation.js"></script>

e.x:压缩到一个文件(jquery + inline-confirmation)不工作

<script type="text/javascript" language="javascript" src="./js/main.js"></script>

内联确认插件:

jQuery.fn.confirm = function(options) 
  options = jQuery.extend(
    msg: 'Are you sure?',
    stopAfter: 'never',
    wrapper: '<span></span>',
    eventType: 'click',
    dialogShow: 'show',
    dialogSpeed: '',
    timeout: 0
  , options);
  options.stopAfter = options.stopAfter.toLowerCase();
  if (!options.stopAfter in ['never', 'once', 'ok', 'cancel']) 
    options.stopAfter = 'never';
  
  options.buttons = jQuery.extend(
    ok: 'Yes',
    cancel: 'No',
    wrapper:'<a href="#"></a>',
    separator: '/'
  , options.buttons);

  // Shortcut to eventType.
  var type = options.eventType;

  return this.each(function() 
    var target = this;
    var $target = jQuery(target);
    var timer;
    var saveHandlers = function() 
      var events = jQuery.data(target, 'events');
      if (!events && target.href) 
        // No handlers but we have href
        $target.bind('click', function() document.location = target.href);
        events = jQuery.data(target, 'events');
       else if (!events) 
        // There are no handlers to save.
        return;
      
      target._handlers = new Array();
      for (var i in events[type]) 
        target._handlers.push(events[type][i]);
      
    

    // Create ok button, and bind in to a click handler.
    var $ok = jQuery(options.buttons.wrapper)
      .append(options.buttons.ok)
      .click(function() 
      // Check if timeout is set.
      if (options.timeout != 0) 
        clearTimeout(timer);
      
      $target.unbind(type, handler);
      $target.show();
      $dialog.hide();
      // Rebind the saved handlers.
      if (target._handlers != undefined) 
        jQuery.each(target._handlers, function() 
          $target.click(this.handler);
        );
      
      // Trigger click event.
      $target.click();
      if (options.stopAfter != 'ok' && options.stopAfter != 'once') 
        $target.unbind(type);
        // Rebind the confirmation handler.
        $target.one(type, handler);
      
      return false;
    )

    var $cancel = jQuery(options.buttons.wrapper).append(options.buttons.cancel).click(function() 
      // Check if timeout is set.
      if (options.timeout != 0) 
        clearTimeout(timer);
      
      if (options.stopAfter != 'cancel' && options.stopAfter != 'once') 
        $target.one(type, handler);
      
      $target.show();
      $dialog.hide();
      return false;
    );

    if (options.buttons.cls) 
      $ok.addClass(options.buttons.cls);
      $cancel.addClass(options.buttons.cls);
    

    var $dialog = jQuery(options.wrapper)
    .append(options.msg)
    .append($ok)
    .append(options.buttons.separator)
    .append($cancel);

    var handler = function() 
      jQuery(this).hide();

      // Do this check because of a jQuery bug
      if (options.dialogShow != 'show') 
        $dialog.hide();
      

      $dialog.insertBefore(this);
      // Display the dialog.
      $dialog[options.dialogShow](options.dialogSpeed);
      if (options.timeout != 0) 
        // Set timeout
        clearTimeout(timer);
        timer = setTimeout(function() $cancel.click(); $target.one(type, handler);, options.timeout);
      
      return false;
    ;

    saveHandlers();
    $target.unbind(type);
    target._confirm = handler
    target._confirmEvent = type;
    $target.one(type, handler);
  );

谢谢

【问题讨论】:

在压缩文件中。插件代码之前有jQuery库吗? 是的,当然。我把这个告诉我的问题:现在这个文件的顶部是 jquery 1.7.1,然后我放了内联确认插件 尝试显示整个压缩文件。另外,您真的想将库和插件放在一个文件中吗?我的意思是,如果有更新怎么办? 【参考方案1】:

我同意 rgin 的观点,我们可能需要查看整个文件(并且您可能应该将其分开),但我认为可能只是文件被缓存了。按 ctrl-F5 或手动清除缓存。

【讨论】:

以上是关于jquery 模拟 confirm 要求使用方法和 window.confirm 一样的主要内容,如果未能解决你的问题,请参考以下文章

如何用js模拟alert,confirm确认后才提交

jQuery仿confirm遇到的问题

FullCalendar和jquery-confirm应用

如何在 C# 代码中使用 jQuery dialog() 而不是 confirm()?

模拟alert,confirm 阻塞状态

在 Laravel 表单中使用 Jquery Confirm 打开?