如何使用jQuery或仅使用Javascript将按钮重定向到另一个页面


101

我正在制作原型,我希望搜索按钮链接到示例搜索结果页面。

当使用jQuery或纯JS单击按钮时,如何使按钮重定向到另一个页面。


我之所以要求js是因为我没有想到有一个简单的HTML解决方案可用。谢谢,它解决了我的目的。
Ankur

Answers:


64

没有脚本:

<form action="where-you-want-to-go"><input type="submit"></form>

更好的是,由于您正要去某个地方,因此向用户显示“正去某个地方”的标准界面:

<a href="where-you-want-to-go">ta da</a>

尽管上下文听起来像“在用户提交表单时模拟普通搜索”,但在这种情况下,第一种选择是行之有效的方法。


13
谁会想到一个链接?哈哈
meouw 2010年

+1的形式。由于这将是一种适当的搜索形式,因此如果可能的话,您现在应该现在就这样做。
DisgruntledGoat 2010年

@suhail —三倍的代码和对JavaScript的依赖不是很好。
昆汀

1
@ayjay —单击提交按钮仅在提交按钮与该表单相关联时提交表单。将输入放入其中是执行此操作的传统且获得最佳支持的方法。
昆汀2014年

1
@mimi-不,不是。仅当您发出的请求不是“安全”时才发生表单重新提交问题(在这种情况下,它应该是POST表单……但是问题是关于简单导航的问题,因此没有理由不认为它是安全的)。当请求可能不安全时,浏览器只会警告人们这种可能性(因此,在这种情况下,由于不是,他们就不会method="POST")。
昆汀

201

你是这个意思吗?

$('button selector').click(function(){
   window.location.href='the_link_to_go_to.html';
})

1
根据这一stackoverflow的问题和答案,应该倾向于window.location而不是document.location因为这不是规范的方法。
Jujhar Singh 2014年

74
$('#someButton').click(function() {
    window.location.href = '/some/new/page';
    return false;
});


2
如果没有return false,则点击“ Enter或Return键”可能只是将您带到当前网址,而不是重定向到新链接。当您有一个文本输入控件时,当您按下Enter / return键时要发布到另一个URL时,该功能特别有用。
Faith赢得

2
这不是一个很好的解释。返回值指示是否继续处理事件。默认情况下,该事件将继续冒泡,并可能触发其他操作,例如提交表单,转到链接或什么都没有。但是,您真的想在这里“吸收”该事件。通过返回false,事件处理将在此处结束。
redreinard

1
谢谢-返回false救了我-想知道为什么网址不会更改-但是,某些其他脚本必须继续处理点击。
Derrick Dennis'9

22

在html中,您可以将data属性添加到按钮:

<button type="submit" class="mybtn" data-target="/search.html">Search</button>

然后,您可以使用jQuery更改网址:

$('.mybtn').on('click', function(event) {
    event.preventDefault(); 
    var url = $(this).data('target');
    location.replace(url);
});

希望这可以帮助


2020年:由于数据目标方面的问题,对我来说是最佳答案....谢谢!
MarcoZen

21

使用简单的Javascript:

<input type="button" onclick="window.location = 'path-here';">


10

无需javascript,只需将其包装在链接中

<a href="http://www.google.com"><button type="button">button</button></a>

Ankur并未要求提供有效的HTML5,而是要求为其原型提供解决方案
Owen


7

您可以使用window.location

window.location="/newpage.php";

或者,您可以仅使搜索按钮所在的表格具有所需页面的操作。


4

您可以使用此简单的JavaScript代码来使搜索按钮链接到示例搜索结果页面。在这里,我已重定向到主页的“ /搜索”,如果要从Google搜索引擎进行搜索,则可以在表单操作中使用https://www.google.com/search

<form action="/search"> Enter your search text: 
<input type="text" id="searchtext" name="q"> &nbsp;
<input onclick="myFunction()" type="submit" value="Search It" />
</form> 
<script> function myFunction() 
{ 
var search = document.getElementById("searchtext").value; 
window.location = '/search?q='+search; 
} 
</script>

2

根据YT 2012代码。

<button href="https://stackoverflow.com/signin" onclick=";window.location.href=this.getAttribute('href');return false;">Sign In</button>


2

这是最快(最易读,最简单)的方法,Owens 可以工作,但不是合法的HTML,从技术上讲,此答案不是jQuery(但由于jQuery是预先准备好的伪代码-在客户端平台上重新解释为本地JavaScript-真的在jQuery没有这样的事情反正)

 <button onclick="window.location.href='http://www.google.com';">Google</button>

0

在不带干扰的JavaScript(UJS)的带有CoffeeScript的Rails 3中:

添加到assets/javascripts/my_controller.js.coffee

$ ->
  $('#field_name').click ->
    window.location.href = 'new_url'

内容为:触发document.ready事件后,将onclick事件添加到ID为的DOM对象中,field_name该对象将执行javascriptwindow.location.href='new_url';


0

这里有很多关于客户端重定向的问题,我不能大为夸张……这是一个例外。

重定向不应该来自客户端……它应该来自服务器。如果您无法控制服务器,则可以使用Javascript选择另一个URL,但是……这不是重定向。重定向通过在服务器上使用300个状态代码或通过在HTML中添加META标签来完成。


0

使用链接并将其样式设置为按钮:

<a href="#page2" class="ui-btn ui-shadow ui-corner-all">Click this button</a>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.