I have a button (<input type="submit">
). When it is clicked the page reloads. Since I have some jQuery hide()
functions that are called on page load, this causes these elements to be hidden again. How do I make the button do nothing, so I can still add some action that occurs when the button is clicked but not reload the page.

- 5,753
- 72
- 57
- 129

- 50,282
- 110
- 242
- 312
11 Answers
There is no need to use JS or jQuery. to stop the page to reload, just specify the button type as 'button'.
If you don't specify the button type, the browser will automatically set it to 'reset' or 'submit' which causes the page to reload.
<button type='button'>submit</button>

- 10,486
- 9
- 18
- 34

- 3,437
- 2
- 14
- 13
-
5This does work! It's a good alternative to ``. – Rick Jan 14 '15 at 16:42
-
6This works well, and particularly in the case of Chrome (for which the accepted answer doesn't) – hobailey Mar 03 '16 at 14:15
-
3Working on Chrome on Windows 10. Yea! – ssdscott Apr 01 '17 at 23:14
-
This is great but it doesn't enforce required fields after you implement this. – jade290 Dec 03 '20 at 16:17
-
The problem here though is it doesn't call the required or validation. – Oliver Dixon Aug 16 '23 at 08:36
Use either the <button>
element or use an <input type="button"/>
.

- 2,761
- 4
- 23
- 33

- 344,730
- 71
- 640
- 635
-
117
-
2you can still use form onsubmit event and return false if you still don't want to return – neu-rah Jun 27 '12 at 23:37
-
-
4@Joe actually unfortunatelly it does :/ I need my webapp to work for IE8 and that reload is kinda annoying... – Ms. Nobody Sep 03 '13 at 06:39
-
27
-
2
-
15
-
`` prevents submission if it's inside a form (FF 59, Chrome 65). ([button](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button) at MDN) – handle Apr 17 '18 at 14:06
In HTML:
<form onsubmit="return false">
</form>
in order to avoid refresh at all "buttons", even with onclick assigned.

- 589
- 5
- 9
-
3Should be correct answer. Using a button breaks the submit and require function of the form – jona Jun 16 '22 at 11:12
You could add a click handler on the button with jQuery and do return false.
$("input[type='submit']").click(function() { return false; });
or
$("form").submit(function() { return false; });

- 4,750
- 19
- 18
-
6This doesnt work. Returning false in chrome, at least in latest versions, still causes refresh. – user3690202 Jun 17 '14 at 19:57
-
This is the only answer which actually worked for me. I just aded return false in my function and the refresh stopped in both safari and chrome. – VessoVit Dec 08 '16 at 01:15
In HTML:
<input type="submit" onclick="return false">
With jQuery, some similar variant, already mentioned.

- 5,698
- 1
- 23
- 35
You can use a form that includes a submit button. Then use jQuery to prevent the default behavior of a form:
$(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>

- 725
- 3
- 14
- 31
You could also use JavaScript for that:
let input = document.querySelector("input");
input.addEventListener("submit", (event) => {
event.preventDefault();
})

- 93
- 1
- 7
As stated in one of the comments (burried) above, this can be fixed by not placing the button tag inside the form tag. When the button is outside the form, the page does not refresh itself.

- 1,710
- 3
- 21
- 36
I can't comment yet, so I'm posting this as an answer.
Best way to avoid reload is how @user2868288 said: using the onsubmit
on the form
tag.
From all the other possibilities mentioned here, it's the only way which allows the new HTML5 browser data input validation to be triggered (<button>
won't do it nor the jQuery/JS handlers) and allows your jQuery/AJAX dynamic info to be appended on the page.
For example:
<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>

- 897
- 9
- 18
Add a to the botton and input data-toggle="modal" like this
<a data-toggle="modal"><button type="submit">Edit Profile</button></a>

- 71
- 1
- 2