gpt4 book ai didi

javascript - 用 Twitter Bootstrap 的模式替换标准的 javascript 确认 - 谁触发了它?

转载 作者:行者123 更新时间:2023-11-29 17:06:43 29 4
gpt4 key购买 nike

我正在尝试用 Twitter Bootstrap 模式窗口替换标准的 javascript 确认。一切几乎都在工作(模态显示及其确认文本),但我一直在 try catch 调用者 href,我需要绑定(bind)“确定”按钮。

这是我的代码(几乎可以工作的示例:http://jsfiddle.net/k5uDw/):

jQuery.altConfirm = function (options) {
var box = '<div class="modal fade static" id="confirm" data-backdrop="static" tabindex="-1" role="dialog">';
box += '<div class="modal-dialog">';
box += '<div class="modal-content">';
box += '<div class="modal-body"> </div>';
box += '<div class="modal-footer">';
box += '<button type="button" class="btn btn-default" data-dismiss="modal">No</button>';
box += '<button type="button" class="btn btn-primary">Ok</button>';
box += '</div>';
box += '</div>';
box += '</div>';
box += '</div>';
$("body").append(box);

window.confirm = function () {
$(".modal-body").html( arguments[0].replace(/\n/, "<br />") );
$('.modal').modal();
$(".btn-default").on('click', function() {
$(this).modal('hide');
});
$(".btn-primary").on('click', function() {
return true; // this is where I need the caller's HREF,
// to make it actually proceed.
// Return true, obviously, does nothing.
});
};
};

$(document).ready(function() {
$.altConfirm();
});

有什么提示吗?请注意,我希望这是标准 javascript 确认的直接替代品,因此修改确认本身的调用方式是不可能的(如果此插件处于事件状态 -> 然后显示模态,如果此插件未激活 -> 然后触发标准确认)。

最佳答案

我已经用一个可以即时重写代码的解决方案更新了你的 fiddle ;如果您的代码是由框架生成的,并且您不能/不想更改编写它的框架的函数,那么这是一个有用的解决方案:

http://jsfiddle.net/k5uDw/16/

在文档 ready() 上,它查找标签,如果找到“确认”调用,则更新传递给它的参数以存储一些其他信息(打开链接或按下确定时执行的操作)模式);然后是覆盖标准 confirm() 的函数,始终返回 false(以停止执行)并处理当用户在模态上按下 ok 时必须完成的操作:

$(document).ready(function() {
console.log('loading done');

jQuery.each($('body').find('a'), function(i, val) {

var hrefAttr = ($(val).attr('href'));

$(val).attr('href', '');

$(val).attr('onClick', function(index, value) {
if (value != undefined) {

var att = '-';
if (hrefAttr == '#') {
att = $(this).attr('onclick');
//att = att.match(/{ (.*) }/);
att = att.substring(att.indexOf('{') + 1, att.indexOf('}'));
}
if (value.indexOf("confirm('") >= 0) {
return value.replace("confirm('", "confirm('" + hrefAttr + '||| ' + att + '||| ');
}
if (value.indexOf('confirm("') >= 0) {
return value.replace('confirm("', 'confirm("' + hrefAttr + '||| ' + att + '||| ');
}

}
});
});


$.altConfirm();
});

关于javascript - 用 Twitter Bootstrap 的模式替换标准的 javascript 确认 - 谁触发了它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24139366/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com