HTML表单和Javascript确认
问题描述:
我在提交表单和Javascript确认时遇到问题。基本上,按下“提交”按钮时会调用以下Javascript。HTML表单和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仍然处于同一页面,它仍在处理中。除了将处理移至不同的页面,我的解决方案是什么?
答
它的工作原理是这样的,因为它是一个sumbit按钮,表单在任何情况下都被提交。分配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();
}
}
答
尝试:
return answer;
在函数的结尾,并确保的onclick方法返回。像这样:
<input type="submit" value="Edit" onclick="return confirmation()">
这将使函数返回false并且不会发布表单。
答
不要使用提交按钮的onclick事件,使用的onsubmit事件您的表单:
document.forms[0].onsubmit = function() {
return confirm("Are you sure you wish to edit?");
}
您可能需要为表单添加id属性以标识它。
在JavaScript代码上保留事件绑定;而不是HTML上的内联属性,使您的代码更加易于理解并且易于调试。
如果方法返回false,表单将不会被提交... – Robban 2009-08-31 08:37:03