Code HTML API tra cứu 34 tỉnh thành Việt Nam sau sáp nhập

Tác giả: Hòa Trần Blogger - đăng vào tháng 9 09, 2025

Chia sẻ code HTML + JavaScript tích hợp API tra cứu danh sách 34 tỉnh/thành Việt Nam sau sáp nhập 2025. Hỗ trợ chọn tỉnh, xã/phường và hiển thị địa chỉ đầy đủ với giao diện CSS đẹp.

Để hỗ trợ lập trình viên và webmaster cập nhật kịp thời, trong bài viết này mình chia sẻ code HTML + JavaScript kèm API dữ liệu 34 tỉnh/thành mới nhất. Với đoạn code này, bạn có thể dễ dàng tích hợp dropdown chọn tỉnh, xã/phường và hiển thị địa chỉ đầy đủ với giao diện CSS gọn gàng, hiện đại.

Demo

Chọn Địa Chỉ

Code

<style>
.address-box{font-family:Arial,sans-serif;background:#f4f6f9;display:flex;justify-content:center;align-items:center;min-height:100vh;margin:0}
.address-box .address-card{background:#fff;padding:25px 30px;border-radius:12px;box-shadow:0 4px 15px rgba(0,0,0,0.1);width:400px}
.address-box h2{text-align:center;margin-bottom:20px;color:#333}
.address-box label{font-weight:bold;display:block;margin:15px 0 5px;color:#444}
.address-box select{width:100%;padding:10px;border-radius:8px;border:1px solid #ccc;outline:none;transition:all 0.2s ease}
.address-box select:focus{border-color:#007bff;box-shadow:0 0 5px rgba(0,123,255,0.5)}
.address-box .address-result{display:none;margin-top:20px;padding:15px;background:#f0f8ff;border-left:4px solid #007bff;border-radius:6px;font-size:14px;color:#333}
</style>
<div class="address-box">
  <div class="address-card">
    <h2>Chọn Địa Chỉ</h2>
    <label for="province">Chọn Tỉnh/Thành:</label>
    <select id="province">
      <option value="">-- Chọn tỉnh/thành --</option>
    </select>
    <label for="ward">Chọn Xã/Phường/Thị trấn:</label>
    <select id="ward">
      <option value="">-- Chọn xã/phường --</option>
    </select>
    <div id="result" class="address-result"></div>
  </div>
</div>
<script> async function loadData() { const res = await fetch("https://raw.githubusercontent.com/giaodienblog/cdn/refs/heads/master/provinces-database.json"); const data = await res.json(); const provinceSelect = document.getElementById('province'); const wardSelect = document.getElementById('ward'); const resultDiv = document.getElementById('result'); const MUNICIPALITIES = ["Hà Nội", "Hồ Chí Minh", "Hải Phòng", "Đà Nẵng", "Cần Thơ", "Huế"]; data.forEach(p => { const opt = document.createElement("option"); const name = p.Name || p.FullName || p.name; const isCity = MUNICIPALITIES.some(c => name.toLowerCase().includes(c.toLowerCase())); opt.value = p.Code || p.code || name; opt.textContent = (isCity ? "Thành phố " : "Tỉnh ") + name; provinceSelect.appendChild(opt); }); provinceSelect.addEventListener("change", () => { wardSelect.innerHTML = '<option value="">-- Chọn xã/phường --</option>'; resultDiv.style.display = "none"; resultDiv.innerHTML = ""; const prov = data.find(p => (p.Code || p.code) == provinceSelect.value); if (prov && prov.Wards) { prov.Wards.forEach(w => { const o = document.createElement("option"); o.value = w.Code || w.code; o.textContent = (w.AdministrativeUnitShortName ? w.AdministrativeUnitShortName + " " : "") + (w.Name || w.FullName || w.name); wardSelect.appendChild(o); }); } }); wardSelect.addEventListener("change", () => { const prov = data.find(p => (p.Code || p.code) == provinceSelect.value); const ward = prov?.Wards?.find(w => (w.Code || w.code) == wardSelect.value); if (prov && ward) { const provName = provinceSelect.options[provinceSelect.selectedIndex].textContent; resultDiv.innerHTML = `<strong>Địa chỉ chọn:</strong><br>${provName} - ${ward.FullName||ward.Name||ward.name}`; resultDiv.style.display = "block"; } else { resultDiv.style.display = "none"; resultDiv.innerHTML = ""; } }); } loadData(); </script>
Đừng bỏ lỡ.
Hổ trợ 24/7

Đừng ngừng ngại liên hệ chúng tôi, hổ trợ 24/7. Hotline: 097 1539 681

alt
alt