Wenn in der URL ein Hash (hinter der Raute #) festgestellt wird, wird nach dem vollständigen Laden des Dokuments zu einem Element mit der ID des Hashes gesprungen.
Du kannst den Hash mit Javascript mit der Eigenschaft window.location.hash maniuplieren. Siehe: https://www.w3schools.com/jsref/prop_loc_hash.asp
Den Wert solltest du jedoch speichern. Dieses Script muss vor dem Body, bestenfalls also im Head Bereich stehen:
// Get and reset hash value BEFORE DOM loads.
let hash;
hash = window.location.hash;
if("" !== hash)
{
window.location.hash = "";
}
Meine Scripts lade ich immer am unteren Ende des Bodys, dieser Code funktioniert aber auch im Head, solange jQuery vorher geladen wurde:
// Wait for DOM to load.
$(document).ready(function()
{
// Cancel if no hash is set. The hash variable is defined in the head section.
if(hash === "")
{
return;
}
// Animated scrolling.
$("html, body").animate
(
{
scrollTop: $(hash).offset().top
},
200,
function()
{
// After the animation finishes add the hash back to the url.
window.location.hash = hash;
}
);
});
Alles anzeigen
Um animate nutzen zu können, muss die uncompressed oder minified Version von jQuery genutzt werden. In der slim Variante sind Animationen nicht integriert.
Ein zusammenhängendes Beispiel: https://pastebin.com/NDHV6Adp
Wie Arne Drews schon sagte, macht so eine Formularauswertung mittels AJAX aber wirklich mehr her und ist eher zeitgemäß.