【问题标题】:Javascript Confirm Dialog Not ActivitingJavascript 确认对话框未激活
【发布时间】:2013-01-25 16:33:12
【问题描述】:

代码如下:

<form  method="post" id="cp_ind_form">

    // lots of input fields!
    <input type="submit" name="update_submit" value="Update"  />
    <input type="submit" name="delete_submit" value="Delete"  onclick="deleteConfirm()" />

</form>

scripts.js(确认此文件已连接到以上页面)

(function deleteConfirm() {
    var s = document.getElementById('confirm');
    s.onchange = function() {
        var yes = confirm('Do you really want to delete this location?');
        if (yes) { 
            var f = document.getElementById('cp_ind_form');
            f.submit();
        }
    }
})();

}

这让我发疯了。这样的基本功能在这里不起作用?我基本上是从我拥有的其他代码中复制它,这没有什么不同。有人可以确认我是否遗漏了一个小细节吗?

【问题讨论】:

  • 你看过错误控制台吗?应该有语法错误,你的括号不匹配
  • 提交时收到哪些错误?
  • 查看 scripts.js 中的括号。也许在错误的位置上有一个}。哪个元素的 id 为“确认”?
  • 我没有收到任何错误。我正在使用 Aptana IDE。不要真正将它与 JS 一起使用,所以没想到要查找错误。

标签: javascript html dialog


【解决方案1】:

查看代码。

当您单击提交时,您正在向某事添加 onchange 事件。

您没有触发显示确认,也没有取消原始提交。

而且用 (funciton(){})(); 包裹它是没有意义的

应该是

function deleteConfirm() {
    return confirm('Do you really want to delete this location?');   
}

onclick="return deleteConfirm();"

【讨论】:

  • 这对我来说是最好的答案。哇,太基础了。然而如此有效。时间允许时标记正确...
【解决方案2】:

要在调用deleteConfirm 时实际执行确认,请将您的代码更改为:

function deleteConfirm() {
    var yes = confirm('Do you really want to delete this location?');
    if (yes) { 
        document.getElementById('cp_ind_form').submit();
    }
    // block default submit
    return(false);
}

这也返回 false,因此不会发生默认表单提交。

然后,将您的 HTML 更改为:

onsubmit="return deleteConfirm()"

如果您处理的是 onsubmit 而不是 onclick,则可以通过从处理程序返回 false 来阻止默认提交。

【讨论】:

  • 您正在加倍提交。按钮和 .submit()
  • @epascarello - 不,它返回 false 以阻止默认提交。
  • 其实没有,因为onclick没有返回!
  • 这确实让框显示,但点击删除仍然会删除位置
  • @KickingLettuce - 我在您的 HTML 中添加了一个 mod,以便阻止默认提交。
【解决方案3】:

deleteConfirm() 在按钮单击时运行。在此函数中,您将代码分配给事件onchange,然后等待更改项目#confirm。我不知道那个元素在哪里,但我认为该事件永远不会被触发,所以确认框永远不会显示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多