在我的index.php页面中,我有一个提交按钮,它接收表单数据并通过POST发送到update.php页面。在这个新页面上,数据库被操纵,然后重定向(使用PHP)回到原始页面。这个重定向过程在Firefox中运行良好,但在Chrome / IE中似乎不起作用。
index.php文件中的相关代码:
<form name="battle" action="update.php" method="post">
<input type="radio" name="update" value="<?php print($names[0] . "+" . $names[1]); ?>" />
<input type="radio" name="update" value="<?php print($names[1] . "+" . $names[0]); ?>" />
<input type="submit" name="submit" value="Submit" />
</form>
这是我的update.php文件末尾的代码:
$con->close();
session_write_close();
header("Status: 200");
header( "Location: index.php" );
exit(0);
如果onClick上的提交按钮不已禁用,则此代码 将在所有浏览器中运行,但我确实需要具备此功能。有没有人知道如何使这个重定向工作,同时仍然有禁用按钮fetleure?
答案 0 :(得分:1)
我猜你正在使用javascript禁用提交按钮以防止多次提交。如果您通过设置提交按钮的禁用属性来执行此操作,那么这不是最好的方法,因为它可能有副作用。
如果要阻止使用javascript进行多次提交,更好的方法是将事件处理程序附加到表单提交事件,该事件仅在您第一次触发提交事件时返回true。
function submitHandler ()
{
if (typeof submitHandler.triggered == 'undefined')
{
submitHandler.triggered = true;
return true;
}
else
{
return false;
}
}
将上述内容附加到表单的提交事件中。这应该可以防止多次提交,并且还可以避免禁用提交按钮可能导致的问题。
答案 1 :(得分:1)
在表单提交上禁用提交按钮可能是一件棘手的事情。这对我有用:
NB:需要&gt; = jQuery1.6才能正常工作
test.php的:
<script type="text/javascript">
$(document).ready(function ()
{
$("form").submit(function ()
{
$("input[type='submit']").prop("disabled", true);
})
})
</script>
<form name="battle" action="update.php" method="post">
<input type="radio" name="update" value="foo" />
<input type="radio" name="update" value="bar" />
<input type="submit" name="submit" value="Submit" />
</form>
update.php:
header("Status: 200");
header( "Location: index.php" );
exit(0);
?>
答案 2 :(得分:0)
我最近遇到了同样的问题,这就是我在所有浏览器中所做的修复
$(document).ready(function () {
$("input[type='submit']").click(function () {
$(this).attr('disabled','true');
// validate data
...
// when data is valid send form else enable form
$('form[name="battle"]').submit();
})
});
现在您的表单数据将在任何浏览器中发送。试着让我知道它是怎么回事:))