2013-08-18 69 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" 
相关问题