我有一个简单的处方集,以及一个清除文本输入的按钮。我想使用函数erase()来加载带有空参数的URL。使用location.href不起作用。
怎样才能使这个功能起作用?
此代码位于名为' page.php':
的文件中 <html>
<head>
<script>
function erase(){
window.location.href = "page.php?firstname=&lastname=" // not working
}
</script>
</head>
<body>
<form action='page.php' method='get'>
<table>
<?php
if(empty($_GET['firstname'])) echo "<tr><td>Firstname:</td><td><input type='text' name='firstname'></td></tr>";
else{
echo "<tr><td>Firstname:</td><td>{$_GET['firstname']}";
echo "<input type='hidden' name='firstname' value={$_GET['firstname']}></td></tr>";
}
if(empty($_GET['lastname'])) echo "<tr><td>Lastname:</td><td><input type='text' name='lastname'></td></tr>";
else{
echo "<tr><td>Lastname:</td><td>{$_GET['lastname']}";
echo "<input type='hidden' name='lastname' value={$_GET['lastname']}></td></tr>";
}
?>
<tr><td><input type='submit' value='Send'></td>
<td><button onclick='return erase()'>Erase</button></td></tr>
</table>
</form>
</body>
</html>
答案 0 :(得分:0)
好的,最后我得到了答案。我在这里发布,如果有人有类似的问题。
在Firefox中,当您按下按钮时,即使它不是处方集按钮,Firefox也会调用表单处理程序。默认处理程序是页面本身,因此它会重新加载忽略Javascript代码的页面。
简单的解决方案是添加一个“返回假”&#39;在erase()的末尾。好的解决方案是添加按钮ID并使用:
window.onload = function() {
document.getElementById("buttonID").onclick = function(e) {
e.preventDefault() // NECESARY IN FIREFOX TO AVOID EVENT HANDLER
window.location.href= 'page.php?firstname=&lastname='
}
}
工作正常。也许有人可以提供更详细的解释。
问候!