1$(function () { 2 3 4 $('.ecfb-form').each(function () { 5 6 let form = $(this); 7 8 let current = 0; 9 10 11 $.validator.addMethod("required-field", function (value, element) { 12 let $element = $(element) 13 console.log($element) 14 let validator = this; 15 16 function match(index) { 17 let parent = '[data-step="' + (index + 1) + '"]'; 18 return current == index && $(element).parents(parent).length; 19 } 20 21 $('[data-step]').each(function (i) { 22 if (match(i)) return !validator.optional(element); 23 }) 24 25 return "dependency-mismatch"; 26 }, $.validator.messages.required) 27 28 let v = form.validate({ 29 debug: true, 30 errorClass: "warning", 31 onkeyup: false, 32 onfocusout: false, 33 submitHandler: function (myForm) { 34 myForm.submit(); 35 } 36 }); 37 38 form.children('[data-step="' + current + '"]').addClass('visible'); 39 40 form.on('click', '.goto-prev', function () { 41 let step = $(this).attr('data-goto-step') 42 current = step; 43 console.log('prev') 44 form.children('.step.visible').removeClass('visible') 45 form.children('[data-step="' + step + '"]').addClass('visible'); 46 }) 47 48 form.on('click', '.goto-next', function () { 49 if (v.form()) { 50 let step = $(this).attr('data-goto-step') 51 current = step; 52 console.log('next') 53 form.children('.step.visible').removeClass('visible') 54 form.children('[data-step="' + step + '"]').addClass('visible'); 55 } 56 57 }) 58 59 form.on('submit', function (e) { 60 61 if (v.errorList.length > 0) return false; 62 63 e.preventDefault(); 64 65 let message_field = $(this).find('.ecfb_message'); 66 67 message_field.html('<div class="message"><p>Sende...</p><span class="close"></span></div>'); 68 69 let data = $(this).serialize(); 70 71 let formData = new FormData(); 72 73 formData.append('data', data) 74 formData.append('action', 'ecfb_processing'); 75 formData.append('ajax', true); 76 77 $('[type="file"]').each(function (i) { 78 let name = $(this).attr('name'); 79 let totalfiles = $(this)[0].files.length; 80 console.log(totalfiles, $(this)[0].files) 81 for (let index = 0; index < totalfiles; index++) { 82 console.log($(this)[0].files[index]); 83 formData.append(name + "[]", $(this)[0].files[index]); 84 } 85 86 }) 87 88 let request = $.ajax({ 89 url: ajaxurl, 90 type: 'POST', 91 data: formData, 92 async: false, 93 cache: false, 94 contentType: false, 95 enctype: 'application/x-www-form-urlencoded;', 96 dataType: 'json', 97 processData: false, 98 }); 99 100 request.done((data) => { 101 102 console.log('done', data) 103 104 $.each(data, function (key, value) { 105 message_field.html(''); 106 let message = message_field.append(`<div class="message ${value.message.type}"><p>${value.message.text}</p><span class="close"></span></div>`) 107 108 109 if (value.message.type == 'success') { 110 111 form.find('.inner').hide(); 112 113 if (value.message.redirect != '') { 114 if (value.message.redirect) { 115 setTimeout(() => { 116 window.location.href = value.message.redirect; 117 }, 2000) 118 } 119 } 120 } 121 122 }); 123 }); 124 125 request.fail((data) => { 126 console.log(data, ajaxurl) 127 message_field.html(''); 128 message_field.append(`<div class="message error"><p>Es ist ein Netzwerkfehler aufgetreten!<br>${data.statusText}</p><span class="close"></span></div>`) 129 }) 130 131 }) 132 133 }) 134 135 $('.ecfb_message').on('click', '.close', function () { 136 $(this).parent('.message').remove(); 137 }) 138 139 $('[type="file"]').on('change', function (e) { 140 141 console.log(e); 142 143 $(this).next('.files').html(''); 144 145 let name = $(this).attr('name'); 146 let totalfiles = $(this)[0].files.length; 147 console.log(totalfiles, $(this)[0].files) 148 for (let index = 0; index < totalfiles; index++) { 149 $(this).next('.files').append( 150 $(this)[0].files[index].name + ' - ' + index + '<br>' 151 ); 152 } 153 154 $('a[data-name="' + name + '"]').removeClass('uk-hidden'); 155 156 }) 157 158 $('.clear-files').on('click', function () { 159 let name = $(this).data('name'); 160 let el = $('[name="' + name + '"]') 161 el.val(null); 162 el.next('.files').html(''); 163 $(this).addClass('uk-hidden') 164 }) 165 166})
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.