web-dev-qa-db-ja.com

window.location.hrefが機能しない

私のウェブサイトは http://www.collegeanswerz.com/ です。 Railsを使用しています。コードは大学を検索するためのものです。検索結果を表示するのではなく、ユーザーが大学名を入力してEnterキーを押し、URLに移動できるようにしたい(ユーザーが名前を正しく入力した場合。検索結果を表示したくない場合) 。プレースホルダーとして「a」と「stackoverflow.com」を使用していますが、機能させようとしています。

私はこれに基づいてwindow.location.hrefを使用しています: JavaScript/jQueryで別のWebページにリダイレクトする方法?

javascript

$("#search_text").submit(function() {
    if ($("#search_field").val() == "a")
    {
        window.location.href = "http://stackoverflow.com";
        alert('worked');
    }
});

レイアウトファイル

<%= form_tag("/search", :method => 'get', :id => 'search_text', :class => 'form_search') do -%> 
    <div id="search"> <%= search_field_tag :search, params[:search], :placeholder => 'enter college', :id => "search_field", :class => 'input-medium search-query' %></div> 
<% end -%>

static_pages_controller.rb

def search
  @colleges = College.search(params[:search])
end

アラートが機能しているため、ifステートメント内の処理を実行する必要があることがわかります。しかし、stackoverflow.comではなく通常の検索結果に移動します。どうしてこれなの?

14
Adam Zerner

コードの実行後、ブラウザはまだフォームを送信しています。

それを防ぐには、return false;をハンドラーに追加します。

38
SLaks

これを試して

`var url = "http://stackoverflow.com";    
$(location).attr('href',url);`

または、あなたはこのようなことをすることができます

// similar behavior as an HTTP redirect
window.location.replace("http://stackoverflow.com");

// similar behavior as clicking on a link
window.location.href = "http://stackoverflow.com";

関数呼び出しの最後にreturn falseを追加します

2
Arihant Godha

以下のように//ではなく\\ by-mistakeを使用していることを確認してください

Wrong:"http:\\stackoverflow.com"

Right:"http://stackoverflow.com"
1
Moumit

HTML5にはhistory.pushState()およびhistory.replaceState()メソッドが導入され、それぞれ履歴エントリを追加および変更できます。そして、私が知っているように、次のコードのようにpushState関数を使用して問題を解決できます。

history.pushState(null、null、 " http://stackoverflow.com ")この種の問題を処理するためのHTML5の新機能に関する詳細情報が利用可能です here

0
Mostafa Ghadimi