gpt4 book ai didi

jquery - 重写 JavascriptConfirm() 同时保留回调

转载 作者:行者123 更新时间:2023-12-03 22:45:51 25 4
gpt4 key购买 nike


到目前为止,我想重写标准js confirm() jQuery 插件中的函数。我已经弄清楚如何使用下面的简单功能布局来做到这一点。

function confirm(opts) {
//code
}

现在,我想做的是调用 confirm 中的另一个函数上面的函数,就像这样......

function confirm(opts) {
openModal(opts);
}

openModal函数将打开一个带有消息和所需按钮的自定义模式窗口。这两个按钮都是 <span>id submit 之一或cancelsubmit返回 true 和 cancel返回假。但现在,我如何根据单击的按钮返回 true 或 false?

例如...

$('#openModal').live('click', function() {
var opts = { title:'Modal Title', message:'This is a modal!' };
var resp = confirm(opts);
if(resp)
// user clicked <span id="submit"></span>
else
// user clicked <span id="cancel"></span>
});

希望你明白我的意思。

最佳答案

可能的,但不完全像你所描述的那样。确认函数的典型使用方式是:

if(confirm("Are you sure you want to submit this form?")) {
form.submit();
}

在上面的示例中,按钮按下操作会同步返回到脚本。函数内的执行会暂停,直到按下按钮为止。

“模式对话框”只是 HTML 网页全部内容的覆盖层。对于浏览器来说,此类覆盖层中的按钮与该页面中其他任何地方的按钮的工作方式相同。

由于 JavaScript 异步处理此类按钮点击(即使用回调函数来处理事件)而不是同步,因此您尝试的方法将不起作用。

您需要将使用确认函数的代码的所有部分更改为如下所示:

confirm("Are you sure you want to submit this form?", function(result) {
if(result) {
form.submit();
}
});

这就像使用 jQuery 本身注册事件处理程序一样工作。脚本立即继续执行,跳过匿名函数中的所有代码。稍后,浏览器将通过您在确认函数中注册的 JavaScript 事件处理程序间接调用该函数,其目的是根据需要使用 truefalse 调用回调函数.

关于jquery - 重写 JavascriptConfirm() 同时保留回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3886228/

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