首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止浏览器在提交表单时跳转到首页

问防止浏览器在提交表单时跳转到首页
EN

Stack Overflow用户
提问于 2012-03-08 11:40:45
回答 3查看 10.6K关注 0票数 4

当用户提交表单时,我试图防止页面跳转到顶部。有很多人建议使用return false。但是,它也会阻止表单的提交。

我想知道有没有人能帮我一下。

代码语言:javascript
复制
**JQuery**

$('#submit').click(function(){ //doesn't work
    return false;
})

$('form').submit(function(){  //doesn't work either
    return false;       
})



**Html**
<form...>
<input>...
<input>...
<input>...

<input type='submit' id='submit' value='submit'>

</form>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-08 11:57:52

当您提交表单时,您实际上加载了一个新页面。在submit处理程序中返回false只是告诉浏览器不要冒泡事件,也不要执行默认事件,在本例中是提交表单,这就是为什么在执行此操作时没有发生任何事情。

有几种方法可以解决你的问题。如果您将用户(在表单提交后)重定向回表单页面,但出现错误,您可以在url中包含“片段标识符”。让片段标识符指向表单的ID,浏览器将自动转到文档的该部分。示例:

代码语言:javascript
复制
<form id="my-form">
    ...
</form>

您的url将是:

代码语言:javascript
复制
host/path?query=querystring#my-form

如果您希望避免页面重新加载,请尝试在JS中进行验证。jQuery验证插件非常容易使用,而且非常棒。查看here以了解如何使用它。它很棒,因为它为您完成了大部分繁重的工作,并且具有一组通用的、默认的验证方法。

或者,您可以通过ajax提交表单,并返回服务器接收到的任何验证错误。如果你没有任何错误,那么你可以重定向到下一页。如果有错误,则将它们粘贴到窗体中或显示一个警告。此解决方案将避免您必须在客户端复制任何复杂的验证逻辑(如果您想要使用jQuery验证插件)。

票数 3
EN

Stack Overflow用户

发布于 2012-03-08 13:33:11

尝试在jquery中使用preventDefault()。

代码语言:javascript
复制
$('#submit').click(function(e){ 
    e.preventDefault();
});
票数 3
EN

Stack Overflow用户

发布于 2019-06-21 15:46:39

如果在drupal表单的jQuery对话框中使用'submit‘表单类型(带有#ajax回调):

尝试使用'button‘表单类型(也可以使用#ajax回调)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9612569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档