Thank you very much ! Varnaa ^_^
I understand, I can get the country data, but in my case I need to use 2 select boxes to filter for a different purpose. The API requires a parameter to be passed in order to retrieve the data. Is there any way in Joget to get the data form to pass as I want, is there any way to get form data, besides using custom HTML to handle scripts?
<script>
$(document).ready(function() {
const regionSelect = FormUtil.getField("select_region");
const countrySelect = FormUtil.getField("select_child");
const addressField = FormUtil.getField("address");
function setAddressReadonly() {
$("input[name='address']").prop('readonly', true);
$("input[name='address']").prop('disabled', true);
}
setAddressReadonly();
function loadCountriesByRegion(region) {
if (!region) return;
countrySelect.empty();
countrySelect.append('<option value="">Đang tải...</option>');
$.ajax({
url: `https://restcountries.com/v3.1/region/${region}`,
method: 'GET',
success: function(countries) {
countrySelect.empty();
countrySelect.append('<option value="">Chọn quốc gia</option>');
countries.sort((a, b) => a.name.common.localeCompare(b.name.common));
countries.forEach(country => {
countrySelect.append(
`<option value="${country.name.common}">${country.name.common}</option>`
);
});
countrySelect.trigger('change');
},
error: function() {
countrySelect.empty();
countrySelect.append('<option value="">Lỗi tải danh sách quốc gia</option>');
}
});
}
regionSelect.on('change', function() {
const selectedRegion = $(this).val();
if (selectedRegion) {
loadCountriesByRegion(selectedRegion);
} else {
countrySelect.empty();
countrySelect.append('<option value="">Vui lòng chọn vùng trước</option>');
}
updateAddress();
});
countrySelect.on('change', function() {
updateAddress();
});
function updateAddress() {
$("input[name='address']").prop('readonly', false);
$("input[name='address']").prop('disabled', false);
const region = regionSelect.val();
const country = countrySelect.val();
if (region && country) {
const formattedAddress = `${country}, ${region}`;
addressField.val(formattedAddress).trigger("change");
} else {
addressField.val('').trigger("change");
}
setAddressReadonly();
}
});
</script>