2013-08-18 12 views
13

Meine Website ist http://www.collegeanswerz.com/. Ich benutze Schienen. Der Code ist für die Suche nach Hochschulen. Ich möchte, dass der Benutzer in der Lage ist, den College-Namen einzugeben, auf Enter zu klicken und zur URL zu gelangen, anstatt die Suchergebnisse zu sehen (wenn der Benutzer den Namen richtig eingibt. Wenn nicht, möchte ich die Suchergebnisse anzeigen) . Ich verwende "a" und "stackoverflow.com" als Platzhalter, während ich versuche, es zur Arbeit zu bringen.window.location.href funktioniert nicht

ich window.location.href bin mit auf dieser Basis: 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-Datei

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

Die Warnung funktioniert, was mir sagt, dass die Dinge in der if-Anweisung ausgeführt werden sollen. Aber es bringt mich zu den normalen Suchergebnissen statt stackoverflow.com. Warum ist das?

+0

Ich sehe, dass ich Downvotes bekam. Könnten Sie mich wissen lassen, warum? Ich sehe mit dieser Frage auf den ersten Gedanken nichts falsch. –

+2

Ich habe die Frage nicht abgelehnt, aber Sie sollten zumindest den HTML-Code des Formulars anzeigen. –

+0

Sicher, ich werde die Frage bearbeiten. –

Antwort

36

Der Browser sendet das Formular noch, nachdem der Code ausgeführt wurde.

Fügen Sie dem Handler return false; hinzu, um dies zu verhindern.

+0

Danke, du hast Recht, es hat funktioniert. Dies wird auch hier angesprochen (http://stackoverflow.com/questions/6094130/window-location-not-working-not-opening-page). Ich habe das nicht bemerkt, bevor ich die Frage gestellt habe. –

+1

Du hast gerade mein Leben gerettet. – TheGrimmScientist

+0

Aber wenn ich falsch zurückgebe, ist die Submit-Funktion nutzlos. –

2

Versuchen Sie, diese

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

Oder Sie können wie diese

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

und fügen Sie eine return false am Ende Ihrer Funktionsaufruf

+0

Darf ich den Grund, warum ich eine Absage bekommen habe, wissen? @Adam Zerner –

+2

Sie haben die richtige Antwort (falsch) lange hinzugefügt, nachdem Sie diese Downvotes erhalten haben. – JJJ

+1

@Juhana Bearbeiten meine Antwort und in der Zwischenzeit bekam diese Stimmen. Aber macht es keinen Sinn, einen Kommentar vorher down-voting hinzuzufügen, da diese down voting mich dazu bringen wird, eine beliebige Frage zu beantworten. –

1

Bitte überprüfen Sie // verwenden nicht etwas tun \\ durch Fehler, wie unten

Wrong:"http:\\stackoverflow.com" 

Right:"http://stackoverflow.com" 
Verwandte Themen