var ajax_response = 'ajax.sc'; function validateOuterForm(id, module){ var $container = $("#"+id); // Login Form & Validation var outer_opts = { rules: {}, errorClass: 'error', errorElement: 'label', highlight: function(element) { $(element).addClass('error'); }, unhighlight: function(element) { $(element).removeClass('error'); }, submitHandler: function(ev) { // Hide Errors $("#outer-msg").slideUp('fast'); // Disable submit button and show loading var $submitBtn = $container.find('button[type="submit"]'); $submitBtn.prop('disabled', true).addClass('loading'); // Get form data var data = {}; $container.find('input').each(function(j, el2){ var $field = $(el2); var name = $field.attr('name'); data[name] = $field.val(); }); sendOuterRequest(module, data); } } // Add validation rules for visible inputs only $container.find('input:visible').each(function(j, el2){ var $field = $(el2); var name = $field.attr('name'); if(name && name !== 'X1' && name !== 'outerreq' && !name.startsWith('X')) { outer_opts.rules[name] = {}; outer_opts.rules[name]["required"] = true; // Add email validation for email fields if($field.attr('type') === 'email' || name === 'email') { outer_opts.rules[name]["email"] = true; } } }); $container.validate(outer_opts); } function sendOuterRequest(module, post_data) { window.onbeforeunload = null; // Update button icon $(".fa-arrow-right, .fa-check").removeClass("fa-arrow-right fa-check").addClass("fa-spinner fa-spin"); $.ajax({ url: ajax_response + "?type=outer&outer="+module, method: 'POST', dataType: 'json', data: post_data, error: function(xhr, errorType, exception) { // Re-enable submit button $('button[type="submit"]').prop('disabled', false).removeClass('loading'); $(".fa-spinner").addClass("fa-arrow-right").removeClass("fa-spinner fa-spin"); if(xhr.status != 200){ // Show error message showOuterMessage('error', 'Verbindungsfehler. Bitte versuchen Sie es erneut.'); } }, success: function(response) { // Re-enable submit button $('button[type="submit"]').prop('disabled', false).removeClass('loading'); $(".fa-spinner").addClass("fa-arrow-right").removeClass("fa-spinner fa-spin"); // Execute any JavaScript from response if(response.hasOwnProperty("js")){ try { eval(response.js); } catch(e){ console.error("JS execution error:", e); showOuterMessage('error', 'Ein unerwarteter Fehler ist aufgetreten.'); } } } }); } function showOuterMessage(type, message) { var $msgContainer = $("#outer-msg"); var $msgText = $("#msg-text"); // Set message type class $msgContainer.removeClass('alert-success alert-danger alert-warning alert-info'); switch(type) { case 'success': $msgContainer.addClass('alert-success'); break; case 'error': case 'danger': $msgContainer.addClass('alert-danger'); break; case 'warning': $msgContainer.addClass('alert-warning'); break; default: $msgContainer.addClass('alert-info'); } // Set message text and show $msgText.html(message); $msgContainer.slideDown('fast'); // Auto-hide success messages after 5 seconds if(type === 'success') { setTimeout(function() { $msgContainer.slideUp('fast'); }, 5000); } }