DNN:dnnConfirm需要两次点击才能显示

时间:2014-12-09 06:44:55

标签: javascript jquery dotnetnuke

我正在使用以下代码在继续之前显示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;
});

1 个答案:

答案 0 :(得分:1)

这里有一些问题可能会给你带来麻烦。

不幸的是,你没有包含setInfo()方法的代码,但我先看一下。例如。这个方法返回false吗?

另一个问题可能是从

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

可能会使某些其他所需行为短路。一般情况下,您最好使用:

e.preventDefault();

代替。

我还要注意$(&#34;#link-btn&#34;)。click()可能不会做你认为它做的事情。而不是处理确认对话框的结果,在启动确认对话框时会触发此操作。 (例如#link-btn 点击

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

<强>超链接

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

<强>的Javascript

$("#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
});