User jQuery(document).ready(function($) { var isSearchActive = false; var currentZipCode = ''; var searchTimeout; // Search setup $('input[name="zipcode"]').on('input', function() { var zipCode = $(this).val().trim(); clearTimeout(searchTimeout); searchTimeout = setTimeout(function() { if (zipCode.length === 5) { isSearchActive = true; currentZipCode = zipCode; performSearch(zipCode); $('#load-more-contacts').hide(); } else { if (isSearchActive) { isSearchActive = false; if (zipCode.length === 0) { loadDefaultContacts(); checkIfMoreContactsToLoad(); } else { $('.eku-contacts').html(''); } } } }, 500); }); $('.contact-filter form').on('submit', function(event) { event.preventDefault(); var zipCode = $('input[name="zipcode"]').val().trim(); if (zipCode.length === 5) { performSearch(zipCode); $('#load-more-contacts').hide(); } }); // Load more button $('#load-more-contacts').on('click', function() { var $this = $(this); var offset = $this.data('offset'); var action = isSearchActive ? 'search_by_zipcode' : 'load_default_contacts'; var data = { action: action, nonce: kontaktAjax.nonce, offset: offset, }; if (isSearchActive) { data.zipcode = currentZipCode; } $.ajax({ url: kontaktAjax.ajaxurl, type: 'POST', dataType: 'json', data: data, success: function(response) { if (response.success && response.data.content) { $('.eku-contacts').append(response.data.content); var newOffset = offset + $('.contact-entry').length; $this.data('offset', newOffset); if (!response.data.more_to_load) { $this.hide(); } else { $this.show(); } } else { $this.hide(); } }, error: function(xhr, status, error) { console.log('Error loading more contacts:', error); $this.hide(); } }); }); // Perform ZIP code search function performSearch(zipCode) { $.ajax({ url: kontaktAjax.ajaxurl, type: 'POST', dataType: 'json', data: { action: 'search_by_zipcode', nonce: kontaktAjax.nonce, zipcode: zipCode, }, success: function(response) { if (response.success) { $('.eku-contacts').html(response.data); $('#load-more-contacts').hide(); } else { $('.eku-contacts').html('

Search failed. Please try again.

'); } } }); } // Load default contacts function loadDefaultContacts() { $.ajax({ url: kontaktAjax.ajaxurl, type: 'POST', dataType: 'json', data: { action: 'load_default_contacts', nonce: kontaktAjax.nonce, }, success: function(response) { if (response.success) { if (response.data && response.data.content) { $('.eku-contacts').html(response.data.content); } else { $('.eku-contacts').html('

No default contacts found.

'); } } else { $('.eku-contacts').html('

Failed to load default contacts. Please try again.

'); } }, error: function(xhr, status, error) { $('.eku-contacts').html('

Error loading contacts. Please try again later.

'); } }); } }); jQuery(document).ready(function($) { function updateContacts(filters) { $.ajax({ url: kontaktAjax.ajaxurl, type: 'POST', data: { action: 'filter_contacts', nonce: kontaktAjax.nonce, filters: filters }, success: function(response) { if (response.success) { $('.eku-contacts').html(response.data); } else { $('.eku-contacts').html('

No contacts found.

'); } }, error: function() { $('.eku-contacts').html('

Error loading contacts.

'); } }); } $('select[name="standort"], select[name="position"]').on('change', function() { var filters = { standort: $('select[name="standort"]').val(), position: $('select[name="position"]').val() }; updateContacts(filters); }); });