DNN:dnn确认需要两次点击才能显示

DNN: dnnConfirm needs two clicks to show

本文关键字:两次 显示 dnn 确认 DNN      更新时间:2023-09-26

在继续之前,我使用以下代码显示dnnConfirm确认弹出窗口。问题是它需要两次单击才能显示。当我关闭它并再次单击按钮时,它需要 3 次单击,依此类推。

我是 DNN 的新手,不知道这里一定出了什么问题。请指导

这是我的超链接按钮:

<a id="link-btn" class="dnnSecondaryAction" onclick="setInfo();"/>Save Info</a>

这是我的确认码:

$("#link-btn").dnnConfirm({
            text: "<div class='MS'>Save info?</div>",
            title: "Confirm Save",
            yesText: 'Yes',
            noText: 'No',
            isButton: true
});
//handle user decision
$("#link-btn").click(function (e, isYES) {
        if (isYES) {
            saveUserInfo(userID);
        }
        return false;
});

这里有几个问题可能会给您带来问题。

不幸的是,您没有包含 setInfo() 方法的代码,但我会先看看那里。 例如,此方法是否返回假?

另一个问题可能是从

$("#link-btn").click(function (e, isYES) {

这可能会使其他一些所需的行为短路。 一般来说,你最好使用:

e.preventDefault();

相反。

我还要指出,$("#link-btn").click() 可能不会做你认为它做的事情。 这不是处理确认对话框的结果,而是在启动确认对话框时触发。 (例如,点击 #link-BTN)

为了解决双击显示问题的潜在原因(并且还能够处理确认对话框的结果),我建议重写如下:

超链接

<a id="link-btn" class="dnnSecondaryAction"/>Save Info</a>

爪哇语

$("#link-btn").dnnConfirm({
            text: "<div class='MS'>Save info?</div>",
            title: "Confirm Save",
            yesText: 'Yes',
            noText: 'No',
            isButton: true,
            callbackTrue: function() {
                saveUserInfo(userID);  // assuming userID is a global
            }
});
$("#link-btn").click(function (e) {
    setInfo();
    // in this case, you don't need to call e.preventDefault() 
    // as dnnConfirm will handle that for you
});