2010-12-09 2 views
3

ist es möglich, irgendwie den Hash der URL von der <input>-Tag beeinflussen?jQuery/JavaScript: Ändern URL-Hash von Tag oder auf Formular senden

Ich brauche eine Suche ohne Aktualisierung der Seite zu initiieren, sondern will auch das URL-Hash ändern, zum Beispiel: search.html#query=hello%20world, wenn ich hello world insbesondere <input> eingegeben habe und die Eingabetaste drücken (oder abschicken).

UPD: Ich habe eine AJAX-Suche, aber ich möchte die Geschichte zurück und vorwärts Tasten arbeiten.

Also, jedes Mal, wenn der Benutzer etwas sucht, möchte ich, dass er auf der gleichen Seite bleibt, Suchergebnisse über AJAX lädt und den URL-Hash der Seite ändert, um die Verlaufsschaltflächen zu aktivieren.

Antwort

1

Ja.

document.getElementById('search-form').onsubmit = function() { 
    var hash = 'query=' + 
       encodeURIComponent(document.getElementById('query').value); 

    window.location.hash = hash; 
}; 

See it on jsFiddle.

+0

Ich glaube, es ist die richtige Lösung. Vielen Dank. – Honneykeepa

+0

Bei einer AJAX-Suche sollten Sie auf "onsubmit" achten - abhängig von Ihrem HTML-Code wird das Ereignis möglicherweise nie ausgelöst. –

+0

Ja, ich benutze derzeit Submit-Handler mit einem 'Return false', wird es noch funktionieren? – Honneykeepa

1

Verwenden Sie die Eigenschaft window.location.hash, um den Hashwert abzurufen und festzulegen.

var e = document.getElementById('search'); 
window.location.hash = "#"+escape(e.value); 
0

Da Sie dies asynchron tun, kann ich Ihnen nicht genau sagen, wie es geht, aber ich nehme an, Sie haben eine Art Suchfunktion, in der Sie den Wert input erhalten und die Suche durchführen:

function your_search_function() 
{ 
    var searchString = document.getElementById('your-input').val // get the value 

    // do your search stuff... 

    window.location.hash = 'query=' + encodeURIComponent(searchString); 
} 
Verwandte Themen