(function($){ // General selector for any acf input with the name "endpoint" var acfEndpointInputSelector = 'input[id ^= "acf_fields"][id $= "endpoint"]'; var errorUrlDiv = '
Please enter a valid url
'; var errorJsonDiv = '
There is no JSON file at the destination url or the file does not contain valid JSON
'; $('.inside').on('keyup', acfEndpointInputSelector, function(event) { var fieldObject = $(event.target).closest('.acf-field-object'); var fieldObjectId = fieldObject.data('id'); var endpointInputSelector = '#acf_fields-' + fieldObjectId + '-endpoint'; var selectDefaultSelector = '#acf_fields-' + fieldObjectId + '-default'; fieldObject.find('#js_check-url-div-' + fieldObjectId) .remove(); fieldObject.find('.js_remove-dynamic-elements').remove(); var url = $.trim($(this).val()); if (url !== '') { var checkAndRetrieveButtonDiv = '
\ Check Url \
'; $(endpointInputSelector).after(checkAndRetrieveButtonDiv); $('.inside').on('click', '#js_check-url-' + fieldObjectId, function(event) { event.preventDefault(); fieldObject.find('.js_remove-dynamic-elements').remove(); try { checkUrlAndPopulateSelect(url, selectDefaultSelector, endpointInputSelector, fieldObjectId); } catch (err) { $(endpointInputSelector).after(errorUrlDiv); } }); } else { $('js_btn-check-' + fieldObjectId).remove(); } }); function checkUrlAndPopulateSelect(url, selectDefaultSelector, endpointInputSelector) { if (url !== '' && !isUrlValid(url)) { $(this).after(errorUrlDiv); } else { $.getJSON(url, function (data) { populateSelect(data.entry, selectDefaultSelector); }).fail(function () { $(endpointInputSelector).after(errorJsonDiv); }); } } function populateSelect(data, selectDefaultSelector) { $(selectDefaultSelector + ' option').remove(); $.each(data, function (index, value) { $(selectDefaultSelector).append($('