Wie mache ich eine HTML-Schaltfläche, um die Seite nicht neu zu laden?


116

Ich habe einen Knopf ( <input type="submit">). Wenn darauf geklickt wird, wird die Seite neu geladen. Da ich einige jQuery- hide()Funktionen habe, die beim Laden der Seite aufgerufen werden, werden diese Elemente wieder ausgeblendet. Wie kann ich die Schaltfläche dazu bringen, nichts zu tun, sodass ich dennoch eine Aktion hinzufügen kann, die auftritt, wenn auf die Schaltfläche geklickt wird, die Seite jedoch nicht neu geladen wird.

Antworten:


228

Es besteht keine Notwendigkeit für js oder jquery. Um das erneute Laden der Seite zu stoppen, geben Sie einfach den Schaltflächentyp als "Schaltfläche" an. Wenn Sie den Schaltflächentyp nicht angeben, setzt der Browser ihn auf "Zurücksetzen" oder "Senden", um die Seite neu zu laden.

 <button type='button'>submit</button> 

3
Das funktioniert! Es ist eine gute Alternative zu <input type='button' />.
Rick

5
Dies funktioniert gut, und insbesondere im Fall von Chrome (für das die akzeptierte Antwort nicht gilt)
hobailey

3
Arbeiten unter Chrome unter Windows 10. Ja!
ssdscott

82

Verwenden Sie entweder das <button>Element oder ein <input type="button"/>.


110
Das <button> -Element bewirkt standardmäßig (zumindest) ein erneutes Laden in Chrome.
AdamC

2
Sie können weiterhin form onsubmit event verwenden und false zurückgeben, wenn Sie immer noch nicht zurückkehren möchten
neu-rah

4
@ Joe eigentlich tut es leider: / Ich brauche meine Webapp, um für IE8 zu arbeiten und das Nachladen ist irgendwie ärgerlich ...
Frau Niemand

24
@pbeardshear Dies ist der Fall, wenn es in einem Formular platziert wird. Wenn <button>es außerhalb eines Formulars platziert wird, erfolgt keine Aktualisierung!
Kevinvhengst

13
Fügen Sie type="button"dem <button>Element in Chrom hinzu und es wird nicht aktualisiert
Johnny Metz

21

In HTML:

<form onsubmit="return false">
</form>

um eine Aktualisierung aller "Schaltflächen" zu vermeiden, auch wenn ein Klick zugewiesen ist.


15

Sie können der Schaltfläche mit jQuery einen Klick-Handler hinzufügen und false zurückgeben.

$("input[type='submit']").click(function() { return false; });

oder

$("form").submit(function() { return false; });

6
Das funktioniert nicht. Die Rückgabe von false in Chrome, zumindest in den neuesten Versionen, führt weiterhin zu einer Aktualisierung.
user3690202

Dies ist die einzige Antwort, die tatsächlich für mich funktioniert hat. Ich habe gerade return false in meiner Funktion hinzugefügt und die Aktualisierung wurde sowohl in Safari als auch in Chrome gestoppt.
VessoVit

13

In HTML:

<input type="submit" onclick="return false">

Mit jQuery eine ähnliche Variante, die bereits erwähnt wurde.


9

Sie können ein Formular verwenden, das eine Schaltfläche zum Senden enthält. Verwenden Sie dann jQuery, um das Standardverhalten eines Formulars zu verhindern:

$(document).ready(function($) {
  $(document).on('submit', '#submit-form', function(event) {
    event.preventDefault();
  
    alert('page did not reload');
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<form id='submit-form'>
  <button type='submit'>submit</button>
</form>


4

Wie in einem der obigen Kommentare (vergraben) angegeben, kann dies behoben werden, indem das Schaltflächen-Tag nicht innerhalb des Formular-Tags platziert wird. Wenn sich die Schaltfläche außerhalb des Formulars befindet, wird die Seite nicht selbst aktualisiert.


2

Ich kann noch keinen Kommentar abgeben, daher poste ich dies als Antwort. Der beste Weg, um ein erneutes Laden zu vermeiden, ist, wie @ user2868288 sagte: Verwenden des onsubmitauf dem formTag.

Von allen anderen hier genannten Möglichkeiten ist dies die einzige Möglichkeit, mit der die neue Validierung der HTML5-Browser-Dateneingabe ausgelöst werden kann (dies <button>wird weder bei den jQuery / JS-Handlern der Fall sein), noch können Ihre dynamischen jQuery / AJAX-Informationen an das angehängt werden Seite. Beispielsweise:

<form id="frmData" onsubmit="return false">
 <input type="email" id="txtEmail" name="input_email" required="" placeholder="Enter a valid e-mail" spellcheck="false"/>
 <input type="tel" id="txtTel" name="input_tel" required="" placeholder="Enter your telephone number" spellcheck="false"/>
 <input type="submit" id="btnSubmit" value="Send Info"/>
</form>
<script type="text/javascript">
  $(document).ready(function(){
    $('#btnSubmit').click(function() {
        var tel = $("#txtTel").val();
        var email = $("#txtEmail").val();
        $.post("scripts/contact.php", {
            tel1: tel,
            email1: email
        })
        .done(function(data) {
            $('#lblEstatus').append(data); // Appends status
            if (data == "Received") {
                $("#btnSubmit").attr('disabled', 'disabled'); // Disable doubleclickers.
            }
        })
        .fail(function(xhr, textStatus, errorThrown) { 
            $('#lblEstatus').append("Error. Try later."); 
        });
     });
   }); 
</script>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.