Joomla站点-有一个调用javascript函数的表单-但它也在重定向我的url-为什么?
守则: javascript:Joomla站点-有一个调用javascript函数的表单-但它也在重定向我的url-为什么?,javascript,jquery,html,forms,joomla,Javascript,Jquery,Html,Forms,Joomla,守则: javascript: <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script type="text/javascript"> function scroll(pos) { var x = location.hash; var scrolamount =
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript">
function scroll(pos)
{
var x = location.hash;
var scrolamount = pos;
console.log(scrolamount);
$('html, body').animate(
{
scrollTop: scrolamount
}, 400);
var d = document.createElement("div");
d.style.height = "101%";
d.style.overflow = "hidden";
document.body.appendChild(d);
setTimeout(function ()
{
d.parentNode.removeChild(d);
}, 100);
return false;
}
</script>
html
此函数显示警报,然后正常返回页面
<div id="tester">
<form action="javascript:alert('action sent');" >
<input type="submit" value="But1">
</form>
此表单按预期滚动页面,但随后会立即将URL重定向到主页
<div id="but1">
<form onsubmit="scroll(400)" >
<input type="submit" value="But1">
</form>
</div>
您没有阻止表单提交。尝试添加以下内容:
onsubmit="scroll(400); return false;"
就是这样-谢谢你能解释一下为什么或者引用一些东西让我理解为什么这样做吗?你也可以返回scroll400,因为函数返回false。或者更好的是,根本不使用内联事件处理程序。@morty346基本上,onsubmit属性是一个事件处理程序。类似于元素的表单具有默认行为。表单正在将数据发送到action属性内指定的页面,从而重定向浏览器。event.preventDefault可以阻止默认行为,但内联处理程序无法访问它。如果您想知道,在另一个上重新运行false将防止默认值和stopPropagationsearch这些术语。通常,有经验的开发人员永远不会使用内联操作。这是一个非常糟糕的做法。@Juhana如果函数scroll返回一些东西怎么办?“你不知道,因此我使用return false的原因。”卡尔·安德烈·加农(Karl AndréGagnon)函数在问题中。它只有一个返回点,返回false。可能是的重复项