2013-08-18 44 views
13

我的網站是http://www.collegeanswerz.com/。我正在使用rails。該代碼用於搜索大學。我希望用戶能夠輸入學院名稱,點擊輸入,然後轉到網址,而不是看到搜索結果(如果用戶輸入了正確的名稱,如果不是,我想顯示搜索結果) 。我使用「a」和「stackoverflow.com」作爲佔位符,同時嘗試使其工作。window.location.href不工作

我使用的是在此基礎上window.location.href:How to redirect to another webpage in JavaScript/jQuery?

的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。爲什麼是這樣?

+0

我看到我得到了讚揚。你能告訴我爲什麼嗎?首先想到這個問題,我沒有看到任何問題。 –

+2

我沒有降低問題的質量,但至少應該顯示錶單的HTML。 –

+0

好的,我會編輯這個問題。 –

回答

36

瀏覽器仍然在代碼運行後提交表單。

return false;添加到處理程序,以防止這種情況。

+0

謝謝,你說得對,它工作。這也在這裏解決(http://stackoverflow.com/questions/6094130/window-location-not-working-not-opening-page)。在我問這個問題之前,我沒有意識到。 –

+1

你剛剛救了我的命。 – TheGrimmScientist

+0

但是,如果我返回false,提交功能是沒有用的。 –

2

試試這個

`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

+0

我可以知道爲什麼我得到了一個投票嗎? @Adam Zerner –

+2

您在獲得這些降薪之後很長時間就添加了正確答案(返回false)。 – JJJ

+1

@Juhana編輯我的答案,同時得到那些倒票。但添加評論之前的投票是沒有意義的,因爲這些投票會使我想回答現在的任何問題 –

1

請檢查您正在使用//\\出錯,如下

Wrong:"http:\\stackoverflow.com" 

Right:"http://stackoverflow.com" 
相關問題