jQueryまたはJavaScriptを使用してボタンを別のページにリダイレクトする方法


101

プロトタイプを作成しています。検索ボタンにサンプルの検索結果ページにリンクさせたいです。

jQueryまたはプレーンJSを使用してクリックされたときにボタンを別のページにリダイレクトするにはどうすればよいですか。


単純なHTMLソリューションが利用できるとは思っていなかったので、jsを要求しました。おかげで私の目的は解決しました。
Ankur

回答:


64

スクリプトなし:

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

さらに良いことに、どこかに行くだけなので、「どこかに行く」ための標準インターフェースをユーザーに提示します。

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

ただし、コンテキストは「ユーザーがフォームを送信する通常の検索をシミュレートする」のように聞こえますが、その場合、最初のオプションが方法です。


13
誰がリンクを考えたでしょうか?(笑)
meouw

フォームの+1。それは最終的には適切な検索フォームになるので、可能であれば今はそのようにする必要があります。
DisgruntledGoat

@suhail — 3倍のコードとJavaScriptへの依存性は良くありません。
クエンティン

1
@ayjay —送信ボタンがフォームに関連付けられている場合のみ、送信ボタンをクリックするとフォームが送信されます。その中に入力を置くことは、それを行うための伝統的でサポートされた最良の方法です。
クエンティン

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

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

5
なぜfalseを返すのですか?
フランシスココラレスモラレス

2
がない場合return false、「EnterキーまたはReturnキー」を押すと、新しいリンクにリダイレクトするのではなく、現在のURLに移動するだけです。Enter / Returnキーを押したときに別のURLに投稿するテキスト入力コントロールがある場合に特に便利です。
信仰が2016

2
それはあまり良い説明ではありません。戻り値は、イベントの処理を続行するかどうかを示します。デフォルトでは、イベントは引き続き発生し、フォームの送信、リンクへの移動、何もしないなど、他のアクションをトリガーする可能性があります。しかし、あなたは本当にここでイベントを「吸収」したいと思っています。falseを返すことにより、イベント処理はここで終了します。
redreinard 2016年

1
おかげで-falseを返すと助かった-なぜURLが変更されないのか疑問に思っていた-しかし、他のスクリプトではクリックの処理を続行しているに違いない。
デリックデニス

22

HTMLでは、ボタンにデータ属性を追加できます。

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

次に、jQueryを使用してURLを変更できます。

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

お役に立てれば


2020:データターゲットについてのビットがあるため、私にとって最良の回答....ありがとう!!!
MarcoZen



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コードを使用して、サンプルの検索結果ページにリンクする検索ボタンを作成できます。ここで、私のホームページの「/ search」にリダイレクトしました。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のようなもの本当にありません)

 <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イベントonclickfield_name発生すると、JavaScriptを実行するIDのDOMオブジェクトにイベントを追加しますwindow.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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.