17

My website is http://www.collegeanswerz.com/. I'm using rails. The code is for searching for colleges. I want the user to be able to type in the colleges name, click enter, and be taken to the url, rather than seeing the search results (if the user types in the name properly. if not I want to show the search results). I'm using "a" and "stackoverflow.com" as placeholders while I try to get it to work.

I'm using window.location.href based on this: 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');
    }
});

layout file

<%= 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

The alert is working, which tells me that the things inside the if statement should be being executed. But it's taking me to the normal search results instead of stackoverflow.com. Why is this?

Community
  • 1
  • 1
Adam Zerner
  • 17,797
  • 15
  • 90
  • 156

4 Answers4

46

The browser is still submitting the form after your code runs.

Add return false; to the handler to prevent that.

SLaks
  • 868,454
  • 176
  • 1,908
  • 1,964
2

Try this

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

Or you can do something like this

// 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";

and add a return false at the end of your function call

Arihant Godha
  • 2,339
  • 2
  • 26
  • 50
  • May I know the reason why I got a down Vote ? @Adam Zerner – Arihant Godha Aug 18 '13 at 15:37
  • 2
    You added the correct answer (return false) long after you got those downvotes. – JJJ Aug 18 '13 at 15:42
  • 1
    @Juhana Was editing my Answer and in the mean time got those down votes. But doesn't it make sense to add comment prior down-voting as these down voting will make me think to answer any of the question now – Arihant Godha Aug 18 '13 at 15:47
  • 2
    If it makes you think before you answer... mission accomplished. – JJJ Aug 18 '13 at 15:49
  • 2
    @ArihantGodha: Giving a wrong or bad answer will get the answer downvoted. Editing it later so it says what another answer already says (intentionally, or not) will not reverse that. When you edit your answer such that it becomes just a duplicate of another, delete it. – T.J. Crowder Aug 18 '13 at 15:49
  • `var url = "http://stackoverflow.com"; $(location).attr('href',url);` this worked for me. Thanks dude. – Raju S Nair Feb 25 '14 at 05:38
1

Please check you are using // not \\ by-mistake , like below

Wrong:"http:\\stackoverflow.com"

Right:"http://stackoverflow.com"
Moumit
  • 8,314
  • 9
  • 55
  • 59
0

if anyone faced problem even after using return false; . then use the below.

setTimeout(function(){document.location.href = "index.php"},500);
Malek Tubaisaht
  • 1,170
  • 14
  • 16