I’ve also updated the code to include a redirect after successful form submission. If the redirect URL is set, it will redirect, if it’s not set, it will show the native success message.
<script>
// 3RD PARTY FORM - WITH FILE UPLOAD AND NATIVE INTERACTIONS (INCLUDES REDIRECT & SUBMIT BUTTON WAITING TEXT)
$('form[action^="https://usebasin.com"]').each(function(i, el) {
form = $(el);
form.submit(function(e) {
// STOP THE FORM FROM SUBMITTING
e.preventDefault();
form = $(e.target);
// GET THE FORM'S ACTION PARAMETER AND ADD ".JSON" TO THE END
action = form.attr('action') + '.json';
// DISABLE ALL BUTTONS IN FORM
$(e.target).find('input[type=submit]').attr("disabled", true);
// GET REDIRECT URL
var dataRedirect = $(e.target).attr("redirect");
// GET & SET "WAITING TEXT" FROM BUTTON - I.E. "SENDING..." ONCE FORM IS BEING SUBMITTED
var dataSubmitText = $(e.target).find('input[type=submit]').attr("value");
var dataWait = $(e.target).find('input[type=submit]').attr("data-wait");
$(e.target).find('input[type=submit]').attr("value", dataWait);
// SUBMIT THE FORM VIA AJAX
$.ajax({
url: action,
method: "POST",
dataType: "JSON",
data: new FormData(this),
processData: false,
contentType: false,
success: function(data) {
if (data.success) {
if (dataRedirect !== undefined){
// SUCCESSFUL SUBMISSION - REDIRECT TO PAGE (IF SET)
window.location.href = dataRedirect;
} else {
// SUCCESSFUL SUBMISSION - HIDE THE FORM AND SHOW THE SUCCESS MESSAGE
parent = $(form.parent());
parent.children('form').css('display', 'none');
parent.children('.w-form-done').css('display', 'block');
//enable all buttons in form
$(e.target).find('input[type=submit]').attr("disabled", false);
$(e.target).find('input[type=submit]').attr("value", dataSubmitText);
}
} else {
// FAILED SUBMISSION - LOG THE OUTPUT TO THE CONSOLE AND SHOW THE FAILURE MESSAGE
console.log(data);
parent.find('.w-form-fail').css('display', 'block');
// ENABLE ALL BUTTONS IN FORM
$(e.target).find('input[type=submit]').attr("disabled", false);
$(e.target).find('input[type=submit]').attr("value", dataSubmitText);
}
},
error: function() {
// FAILED SUBMISSION - SHOW THE FAILURE MESSAGE
parent.find('.w-form-fail').css('display', 'block');
// ENABLE ALL BUTTONS IN FORM
$(e.target).find('input[type=submit]').attr("disabled", false);
}
});
});
});
</script>