我在与提交表单和Javascript确认的问题。基本上,“提交”按钮被按下时以下JavaScript被调用。

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        window.location = "#editform2";
    }
}

然而,当我打的取消而不是确定,JavaScript的执行正确的,因为我看地址栏,并没有更新到#editform2。形式,但是,仍然提交。这似乎刷新页面。下面是来自形式的相关部分:

//Form is encoded in PHP
<form method=\"post\">
//Form is in here
<input type=\"submit\" value=\"Edit\" onclick=\"confirmation()\">

所以形式也不知道到哪里去,它只是刷新页面,该页面恰好是处理器为好。因此,它的处理,即使我点击了取消和JavaScript应该保持它在同一页上。除了移动处理到不同的页面,我有什么办法呢?

有帮助吗?

解决方案

它的工作原理是这样,因为它是透过按钮的形式在任何情况下提交的。分配ID的形式和改变输入类型:

<form method="post" id="formid">
<input type="button" value="Edit" onclick="confirmation()">

和呼吁点击此功能:

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        document.getElementById("formid").submit();
    }
}

其他提示

不要使用提交按钮的onclick事件,使用这个表单的onsubmit事件:

document.forms[0].onsubmit = function () {
    return confirm("Are you sure you wish to edit?");
}

您可能需要一个id属性添加到您的形式来识别它。

保持事件上的JavaScript代码结合;不上你的HTML内嵌属性,使你的代码更maintanable和易于调试。

尝试:

return answer;

在函数的末尾,确保的onclick方法返回此。像这样:

<input type="submit" value="Edit" onclick="return confirmation()">

这将使该函数返回false,形式是不予以公布。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top