I'm not very familiar with jQuery. I'm trying to make a form that is submitted in the background without reloading page.
I have a hidden div which shows and hides on click, inside the div there's a form.
I have two problems:
1) When the form validation fails, the form is still submitted. I tried to put validation and submission codes in condition if(validation == valid) { $.ajax.... }
but it does not work properly.
2) After the form is submitted the div automatically hides, so successful message cannot be seen.
Here's the code:
$().ready(function() {
// Validate the form when it is submitted, using validation plugin.
var validator = $("#contactform").validate({
errorContainer: container,
errorLabelContainer: $(),
onkeyup: false,
onclick: false,
onfocusout: false,
errorPlacement: function (error, element) {
error.insertBefore(element);
}
});
});
$(function() {
//This submits a form
$('input[type=submit]').click(function() {
$.ajax({
type: "POST",
url: "contact.php",
data: $("#contactform").serialize(),
beforeSend: function() {
$('#result').html('<img src="loading.gif" />');
},
success: function(data) {
$('#result').html(data);
}
})
})
})
//This shows and hides div onclick
$(document).ready(function(){
$(".slidingDiv").hide();
$(".show_hide").show();
$('.show_hide').click(function(){
$(".slidingDiv").slideToggle();
});
});
Use jQuery's submit event to handle the form submit, add return false; at the end of the submit handle function to prevent the page to reload. return false ; });
You can use event. preventDefault() to prevent the default event (click) from occurring. Is the same thing will apply for textbox on enter keypress? It should, whatever event is fired it prevents the default action.
For this, we need to trigger submit() function using HTML element. Using the getElementById() method, we have targeted the required form to be submitted. As soon as HTML is clicked submit() is executed and data is stored in the database.
Rather than bind to the click event (input[type=submit]
) you should bind to the submit
event for the form.
$("form").on("submit", function (e) {
e.preventDefault();
I'm also not sure about the validation. If it runs asynchronously, a callback is required. If it runs synchronously, when does it get triggered? It seems like it should be done when the form is submitted unless your validation plugin does that on its own:
$("form").on("submit", function (e) {
e.preventDefault();
if ($(this).validate(options)) {
$.ajax
Using e.preventDefault
will prevent reload and should allow your success div to display.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With