Jak sprawić, by przycisk HTML nie ładował ponownie strony

117

Mam przycisk ( <input type="submit">). Po kliknięciu strona ładuje się ponownie. Ponieważ mam kilka hide()funkcji jQuery, które są wywoływane podczas ładowania strony, powoduje to ponowne ukrycie tych elementów. Jak sprawić, by przycisk nic nie robił, więc nadal mogę dodać akcję, która ma miejsce, gdy przycisk jest kliknięty, ale nie ładuje ponownie strony.

Ankur
źródło

Odpowiedzi:

229

nie ma potrzeby używania js ani jquery. aby zatrzymać ponowne ładowanie strony, określ typ przycisku jako „przycisk”. jeśli nie określisz typu przycisku, przeglądarka ustawi go na „reset” lub „wyślij”, co spowoduje ponowne załadowanie strony.

 <button type='button'>submit</button> 
Jafar Rasooli
źródło
3
To działa! To dobra alternatywa dla <input type='button' />.
Rick
5
Działa to dobrze, a szczególnie w przypadku Chrome (dla którego zaakceptowana odpowiedź nie)
hobailey
3
Praca w Chrome w Windows 10. Tak!
ssdscott
82

Użyj <button>elementu lub użyj pliku <input type="button"/>.

Andrew Hare
źródło
110
Element <button> domyślnie powoduje przeładowanie w chrome (przynajmniej).
AdamC,
2
nadal możesz użyć formularza onsubmit event i zwrócić false, jeśli nadal nie chcesz wracać
neu-rah
4
@Joe faktycznie niestety tak: / Potrzebuję mojej aplikacji internetowej do pracy z IE8 i to przeładowanie jest trochę denerwujące ...
Ms. Nobody
24
@pbeardshear Dzieje się tak, jeśli zostanie umieszczony w formularzu. kiedy <button>jest umieszczony poza formularzem, odświeżanie nie następuje!
Kevinvhengst
13
dodaj type="button"do <button>elementu w chrome i nie odświeża
Johnny Metz
21

W HTML:

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

aby uniknąć odświeżania wszystkich „przycisków”, nawet z przypisanym kliknięciem.

user2868288
źródło
15

Możesz dodać moduł obsługi kliknięcia do przycisku za pomocą jQuery i zwrócić false.

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

lub

$("form").submit(function() { return false; });
Chris Gutierrez
źródło
6
To nie działa. Zwracanie false w chrome, przynajmniej w najnowszych wersjach, nadal powoduje odświeżenie.
user3690202
To jedyna odpowiedź, która faktycznie mi pomogła. Właśnie dodałem return false w mojej funkcji, a odświeżanie zatrzymało się zarówno w Safari, jak i Chrome.
VessoVit
13

W HTML:

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

W przypadku jQuery wspomniano już o podobnym wariancie.

Zaraza 669
źródło
9

Możesz użyć formularza, który zawiera przycisk przesyłania. Następnie użyj jQuery, aby zapobiec domyślnemu zachowaniu formularza:

$(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>

ProgrammingWithRandy
źródło
4

Jak stwierdzono w jednym z komentarzy (ukrytych) powyżej, można to naprawić, nie umieszczając tagu przycisku wewnątrz tagu formularza. Gdy przycisk znajduje się poza formularzem, strona nie odświeża się.

CommonCoreTawan
źródło
2

Nie mogę jeszcze komentować, więc zamieszczam to jako odpowiedź. Najlepszym sposobem uniknięcia przeładowania jest to, jak powiedział @ user2868288: używając znaku onsubmitna formtagu.

Ze wszystkich innych możliwości wymienionych tutaj, jest to jedyny sposób, który pozwala na wyzwolenie nowej walidacji danych wejściowych przeglądarki HTML5 ( <button>nie zrobi tego ani modułów obsługi jQuery / JS) i pozwala na dołączenie dynamicznych informacji jQuery / AJAX do strona. Na przykład:

<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>
Gusstavv Gil
źródło