bookingsform.js
3.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
var em_booking_doing_ajax = false;
$('#em-booking-form').addClass('em-booking-form'); //backward compatability
$(document).on('submit', '.em-booking-form', function(e){
e.preventDefault();
var em_booking_form = $(this);
$.ajax({
url: EM.bookingajaxurl,
data: em_booking_form.serializeArray(),
dataType: 'jsonp',
type:'post',
beforeSend: function(formData, jqForm, options) {
if(em_booking_doing_ajax){
alert(EM.bookingInProgress);
return false;
}
em_booking_doing_ajax = true;
$('.em-booking-message').remove();
em_booking_form.parent().append('<div id="em-loading"></div>');
},
success : function(response, statusText, xhr, $form) {
$('#em-loading').remove();
$('.em-booking-message').remove();
//show error or success message
if(response.result){
$('<div class="em-booking-message-success em-booking-message">'+response.message+'</div>').insertBefore(em_booking_form);
em_booking_form.hide();
$('.em-booking-login').hide();
$(document).trigger('em_booking_success', [response, em_booking_form[0]]);
document.dispatchEvent( new CustomEvent('em_booking_success', {
detail: {
response : response,
form : em_booking_form[0]
}
}));
if( response.redirect ){ //custom redirect hook
window.location.href = response.redirect;
}
}else{
if( response.errors != null ){
if( $.isArray(response.errors) && response.errors.length > 0 ){
var error_msg;
response.errors.each(function(i, el){
error_msg = error_msg + el;
});
$('<div class="em-booking-message-error em-booking-message">'+error_msg.errors+'</div>').insertBefore(em_booking_form);
}else{
$('<div class="em-booking-message-error em-booking-message">'+response.errors+'</div>').insertBefore(em_booking_form);
}
}else{
$('<div class="em-booking-message-error em-booking-message">'+response.message+'</div>').insertBefore(em_booking_form);
}
$(document).trigger('em_booking_error', [response]);
}
$('html, body').animate({ scrollTop: $('.em-booking-message').offset().top - EM.booking_offset }); //sends user back to top of form
em_booking_doing_ajax = false;
//run extra actions after showing the message here
if( response.gateway != null ){
$(document).trigger('em_booking_gateway_add_'+response.gateway, [response]);
}
if( !response.result && typeof Recaptcha != 'undefined' && typeof RecaptchaState != 'undefined'){
Recaptcha.reload();
}else if( !response.result && typeof grecaptcha != 'undefined' ){
grecaptcha.reset();
}
$(document).trigger('em_booking_complete', [response]);
},
error : function(jqXHR, textStatus, errorThrown){
$(document).trigger('em_booking_ajax_error', [jqXHR, textStatus, errorThrown]);
},
complete : function(jqXHR, textStatus){
em_booking_doing_ajax = false;
$('#em-loading').remove();
$(document).trigger('em_booking_ajax_complete', [jqXHR, textStatus]);
}
});
return false;
});