JSFiddle - React, Tailwind, and code Playground
by Good Muyis
HTML
<div class="container">
<div class="row align-items-center justify-content-center" style="min-height: 100vh;">
<div class="col-12 p-4" style="max-width: 400px;">
<h1 class="text-dark text-center my-5" style="font-size: 1.5rem;">States and Local Government Areas in
Nigeria (Dropdown)</h1>
<form>
<div class="form-group ngStates">
<label class="control-label">State of Origin</label>
<select onchange="toggleLGA(this);" name="state" id="state" class="form-control gfield_select">
<option value="" selected="selected">- Select -</option>
<option value="Abia">Abia</option>
<option value="Adamawa">Adamawa</option>
<option value="AkwaIbom">AkwaIbom</option>
<option value="Anambra">Anambra</option>
<option value="Bauchi">Bauchi</option>
<option value="Bayelsa">Bayelsa</option>
<option value="Benue">Benue</option>
<option value="Borno">Borno</option>
<option value="Cross River">Cross River</option>
<option value="Delta">Delta</option>
<option value="Ebonyi">Ebonyi</option>
<option value="Edo">Edo</option>
<option value="Ekiti">Ekiti</option>
<option value="Enugu">Enugu</option>
<option value="FCT">FCT</option>
<option value="Gombe">Gombe</option>
<option value="Imo">Imo</option>
<option value="Jigawa">Jigawa</option>
<option value="Kaduna">Kaduna</option>
<option value="Kano">Kano</option>
<option value="Katsina">Katsina</option>
<option value="Kebbi">Kebbi</option>
<option value="Kogi">Kogi</option>
<option value="Kwara">Kwara</option>
<option value="Lagos">Lagos</option>
<option value="Nasarawa">Nasarawa</option>
<option value="Niger">Niger</option>
<option value="Ogun">Ogun</option>
<option value="Ondo">Ondo</option>
<option value="Osun">Osun</option>
<option value="Oyo">Oyo</option>
<option...
JavaScript
// Get rid of small loading animation
[...document.querySelectorAll(".input-location-dependant")].forEach(element =>
element.classList.toggle("d-none")
);
// Function to set multiple attributes at once
const setAttributes = (el, attrs) => {
for (var key in attrs) {
el.setAttribute(key, attrs[key]);
}
};
const toggleLGA = target => {
let state = target.value, // Get value of state
selectLGAOption = ["Select LGA..."], // Define this once so as not to repeat it multiple times
lgaList = {
Abia: [
"Aba North",
"Aba South",
"Arochukwu",
"Bende",
"Ikwuano",
"Isiala Ngwa North",
"Isiala Ngwa South",
"Isuikwuato",
"Obi Ngwa",
"Ohafia",
"Osisioma",
"Ugwunagbo",
"Ukwa East",
"Ukwa West",
"Umuahia North",
"muahia South",
"Umu Nneochi"
],
Adamawa: [
"Demsa",
"Fufure",
"Ganye",
"Gayuk",
"Gombi",
"Grie",
"Hong",
"Jada",
"Larmurde",
"Madagali",
"Maiha",
"Mayo Belwa",
"Michika",
"Mubi North",
"Mubi South",
"Numan",
"Shelleng",
"Song",
"Toungo",
"Yola North",
"Yola South"
],
AkwaIbom: [
"Abak",
"Eastern Obolo",
"Eket",
"Esit Eket",
"Essien Udim",
"Etim Ekpo",
"Etinan",
"Ibeno",
"Ibesikpo Asutan",
"Ibiono-Ibom",
"Ika",
"Ikono",
"Ikot Abasi",
"Ikot Ekpene",
"Ini",
"Itu",
"Mbo",
"Mkpat-Enin",
"Nsit-Atai",
"Nsit-Ibom",
...