$(document).on('removeEvent.recaptcha', function (e) { $('.btn-submit').off('click'); $( '.form_ajax' ).off('submit'); $(document).off('removeEvent.recaptcha'); }); // pulsante di conferma del form // DEVE ESSERE type="submit" e name="submit" per poter visualizzare i messaggi di errore di validazione // memorizza il form dell'elemento (utilizzato alla conferma del recaptcha) // effettua la validation HTML5 // se andato a buon fine $('.btn-submit').on('click', function (e) { var error = false; actual_form = $(this).closest("form"); $('#upload_container_'+actual_form[0].id).show(); // recupera la classe da applicare in caso di successo var func_check = actual_form.data('check'); if (func_check !== undefined) { var fn = window[func_check]; if (typeof fn === "function") error = fn.apply(null, [this]); } if ( error ) { // esco da on click onErrorRecaptcha(); return false; } // ricerca il recaptcha del form cmlrecaptcha = actual_form.find('.clm-recaptcha'); cmlrecaptcha_id = -1; for (var i = 0; i < clmrecaptchaID.length; i++) { if (clmrecaptchaID[i] == cmlrecaptcha[0].id) cmlrecaptcha_id = i; } if (typeof actual_form[0].checkValidity != 'undefined' && !actual_form[0].checkValidity()) { onErrorRecaptcha(); } else { e.preventDefault(); // esegue il recaptcha se esiste per il form e nel pulsante bnt-submit non è stato imposto di non utilizzare il recaptcha altrimenti richiama la funzione di successo if ((cmlrecaptcha_id != -1) && (!$(this).hasClass('norecaptcha'))) { grecaptcha.reset(clmrecaptchaFunc[cmlrecaptcha_id]); grecaptcha.execute(clmrecaptchaFunc[cmlrecaptcha_id]); } else { if (actual_form.data('gcallback') === undefined) gcallback = onSuccessRecaptcha; else gcallback = window[actual_form.data('gcallback')]; gcallback(); } } }); $( '.form_ajax' ).each(function( index ) { $( this ).before(''); init_form(this.id); }); $( '.form_ajax' ).on('submit', function (e) { e.preventDefault(); $('#alert-code-'+this.id).remove(); $('#upload_container_'+this.id).show(); // recupera le classi da nascondere var class_hide = $(this).find( 'input[name=class_hide]' ); var value_class_hide = class_hide.val(); // recupera la classe da applicare in caso di errore var func_error_code = $(this).data('error_code'); // recupera la classe da applicare in caso di successo var func_positive_response = $(this).data('positive_response'); // recupera la classe da applicare in caso di failure var func_fail = $(this).data('fail'); // recupera la classe da applicare in caso di action var func_action = $(this).data('action'); //grab all form data var formData1 = new FormData(); $(this).find( ':input' ).each( function( index, el ) { switch (el.name) { case "submit": case "code": case "type": case "lang": case "lang_id": case "from": case "module": case "em": case "class_hide": formData1.append(el.name, el.value); break; case "g-recaptcha-response": if (!$(actual_form).find('.btn-submit').hasClass('norecaptcha')) formData1.append(el.name, el.value); break; default: field = $(el); if (!field.hasClass("no-send")) { tagName = field.prop("tagName").toLowerCase(); appendField = true; if (field.hasClass("no-normalize")) { formData1.append(el.name, el.value); } else if (field.attr('type') != "file") { el_lbl_client = el_lbl_admin = lbl_client = lbl_admin = order = required = type = 'undefined'; lbl_client = field.data('label'); if (typeof lbl_client === 'undefined') lbl_client = el.name; lbl_admin = field.data('admin'); if (typeof lbl_admin === 'undefined') lbl_admin = lbl_client; order = field.data('order'); if (typeof order === 'undefined') order = -1; required = field.attr('required'); if (typeof required === 'undefined') required = 0; else required = 1; type = field.attr('type'); if (typeof type === 'undefined') type = ""; if (field.hasClass("cmsdaterange")) type = "cmsdaterange"; if (tagName == "select") { option = field.find(":selected"); val_client = option.data('label'); if (typeof val_client === 'undefined') val_client = option.val(); val_admin = option.data('admin'); if (typeof val_admin === 'undefined') val_admin = val_client; } else if ((type == "radio") || (type == "checkbox")) { checked = field[0].checked; if (checked == false) appendField = false; else { el_error = false; try { el_label = $('[ellabel='+el.name+']'); if (el_label.length == 0) el_error = true; } catch (e) { el_error = true; } if (!el_error) { if (lbl_client != el.name) { val_client = lbl_client; val_admin = lbl_admin; } el_lbl_client = el_label.data('label'); if (typeof el_lbl_client !== 'undefined') lbl_client = el_lbl_client; el_lbl_admin = el_label.data('admin'); if (typeof el_lbl_admin !== 'undefined') lbl_admin = el_lbl_admin; else lbl_admin = lbl_client; } else { val_client = el.value; val_admin = val_client; } } } else { val_client = el.value; val_admin = val_client; } if (appendField) { value = val_client+"|||"+val_admin+"|||"+lbl_client+"|||"+lbl_admin+"|||"+order+"|||"+required+"|||"+type; formData1.append(el.name, value); } } else { for (i = 0; i < field[0].files.length; i++) formData1.append(el.name, field[0].files[i]); } } } } ); $.ajax({ type: "POST", url: 'https://www.vigolo.com/admin/includes/ajax/ajax_frontend.php', content: this, data: formData1, // Data sent to server, a set of key/value pairs (i.e. form fields and values) contentType: false, // The content type used when sending data to the server. cache: false, // To unable request pages to be cached processData:false // To send DOMDocument or non processed data file it is set to false }) .done(function(data){ $('#upload_container_'+this.content.id).hide(); datiJSON = JSON.parse(data); // errore if (datiJSON.hasOwnProperty('error_code')) { if (func_error_code === undefined) { $( this.content ).before('

'+datiJSON.error_code+'

'); $( "#alert-code-"+this.content.id )[0].scrollIntoView(); } else { var fn = window[func_error_code]; if (typeof fn === "function") fn.apply(null, [this, datiJSON, value_class_hide]); } } // azione non legato a risposta positiva if (datiJSON.hasOwnProperty('action')) { if (func_action === undefined) { switch (datiJSON.action) { case 'refresh': location.reload(); break; } } else { var fn = window[func_action]; if (typeof fn === "function") fn.apply(null, [this, datiJSON, value_class_hide]); } } // risposta positiva if (datiJSON.hasOwnProperty('positive_response')) { if (func_positive_response === undefined) { // action legata a risposta positiva if (datiJSON.hasOwnProperty('action')) { switch (datiJSON.action) { case 'popup': $('#popup_result .response_positive').html(datiJSON.positive_response); $('#popup_result').modal('show'); $( this.content ).find('.star').removeClass('fa-star-chosen').removeClass('fa-star-current').removeClass('fa-star').addClass('fa-star-o'); $( this.content )[0].reset(); return; } } $( this.content ).after('
'+datiJSON.positive_response+'
'); $( this.content ).detach(); if (value_class_hide !== undefined) $('.'+value_class_hide).hide(); } else { var fn = window[func_positive_response]; if (typeof fn === "function") fn.apply(null, [this, datiJSON, value_class_hide]); } } }) .fail(function(data, textStatus, errorThrown) { if (func_fail === undefined) { $('#upload_container_'+this.content.id).hide(); $( this.content ).before('

Errore nell\'invio. Riprovare più tardi.
Comunicare all\'amministratore del sito le seguenti informazioni:
- Status: '+data.status+' '+textStatus+'
- Error: '+errorThrown+'

'); } else { var fn = window[func_fail]; if (typeof fn === "function") fn.apply(null, [this, data, value_class_hide]); } }); });