Ich habe ein Problem bei der Verwendung von Schaltflächen im Formular. Ich möchte, dass diese Taste die Funktion aufruft. Es tut es, aber mit unerwünschtem Ergebnis, dass es die Seite aktualisiert.
Mein einfacher Code geht so
<form method="POST">
<button name="data" onclick="getData()">Click</button>
</form>
Beim Klicken auf die Schaltfläche wird die Funktion mit aktualisierter Seite aufgerufen, wodurch alle meine vorherigen Anforderungen zurückgesetzt werden, die sich auf die aktuelle Seite auswirken, die das Ergebnis der vorherigen Anforderung war.
Was kann ich tun, um die Seitenaktualisierung zu verhindern?
javascript
html
Bunkdeath
quelle
quelle
Antworten:
Lassen Sie
getData()
false zurückgeben. Dies wird es beheben.quelle
onclick
Funktion muss false zurückgeben, nichtgetData
.type="button"
ist wirklich der Haken.In
type="button"
der Schaltfläche.Der Standardwert
type
für eine Schaltfläche istsubmit
, der das Formular in Ihrem Fall selbst veröffentlicht und es wie eine Aktualisierung aussehen lässt.quelle
return false;
zum onclick hinzufügen :onclick="getData(); return false;"
Alles, was Sie tun müssen, ist ein Typ-Tag zu setzen und die Typ-Schaltfläche zu erstellen.
Das löst das Problem
quelle
Das Problem ist, dass es die Formularübermittlung auslöst. Wenn Sie die
getData
Funktionreturn false
ausführen, sollte das Senden des Formulars verhindert werden.Alternativ können Sie auch die
preventDefault
Methode des Ereignisobjekts verwenden:quelle
HTML
jQuery
quelle
Verwenden Sie anstelle des Schaltflächen-Tags das Eingabe-Tag. So was,
quelle
button type='button'
Wenn Ihre Schaltfläche die Standardeinstellung "Schaltfläche" ist, stellen Sie sicher, dass Sie das Typattribut explizit festlegen. Andernfalls wird es von WebForm standardmäßig als "Senden" behandelt.
Wenn Sie js verwenden, tun Sie dies
quelle
Eine Javascript-Methode zum Deaktivieren der Schaltfläche selbst
Sobald alle Formularfelder Ihre Kriterien erfüllt haben, können Sie die Schaltfläche wieder aktivieren
Die Verwendung einer JQuery wird ungefähr so sein
quelle
Aus irgendeinem Grund wird in Firefox, obwohl ich
return false;
undmyform.preventDefault();
in der Funktion habe, die Seite aktualisiert, nachdem die Funktion ausgeführt wurde. Und ich weiß nicht, ob dies eine gute Praxis ist, aber es funktioniert für mich, ich fügejavascript:this.preventDefault();
in das Aktionsattribut ein.Wie gesagt, ich habe alle anderen Vorschläge ausprobiert und sie funktionieren in allen Browsern, aber Firefox. Wenn Sie das gleiche Problem haben, versuchen Sie, das Ereignis "Verhindern" entweder
javascript:return false;
oder im Aktionsattribut hinzuzufügenjavascript:this.preventDefault();
. Versuchen Sie nicht, mitjavascript:void(0);
welcher Ihr Code brechen wird. Frag mich nicht warum :-).Ich denke nicht, dass dies eine elegante Art ist, aber in meinem Fall hatte ich keine andere Wahl.
Aktualisieren:
Wenn Sie nach der Verarbeitung von Ajax einen Fehler erhalten haben, entfernen Sie die Attributaktion und führen Sie im
onsubmit
Attribut Ihre Funktion aus, gefolgt von der falschen Rückgabe:onsubmit="functionToRun(); return false;"
Ich weiß nicht, warum all diese Probleme mit Firefox, aber ich hoffe, das funktioniert.
quelle
Die Rückgabefunktion funktioniert nicht in allen Fällen. Ich habe es versucht:
Es hat bei mir nicht funktioniert.
Ich habe versucht, innerhalb der Funktion false zurückzugeben, und es hat bei mir funktioniert.
quelle
Ich hatte das gleiche Problem. Das Problem liegt in der
onclick
Funktion. Es sollte kein Problem mit der Funktion gebengetData
. Es funktionierte, indem dieonclick
Funktion false zurückgab.quelle
Dieser ist die beste Lösung:
Hinweis: Mein Code ist sehr einfach.
quelle
Sie können Ajax und JQuery verwenden, um dieses Problem zu lösen:
quelle