In the snippet below, I have a select menu. When 'Create Agency' is selected, then the red square should display.
Doing something like this in jQuery would be...
const agencyId = document.querySelector("#agencyId");
const addAgencyForm = document.querySelector("#addAgencyForm");
$('#agencyId').on('change', () => {
$('#addAgencyForm').toggle(this);
});
...but I need to do this with Vanilla JavaScript.
Converting the .on() method with a nested toggle... this is as far as I can get:
const agencyId = document.querySelector("#agencyId");
const addAgencyForm = document.querySelector("#addAgencyForm");
agencyId.addEventListener("change", (event) => {
if (event.target && event.target.id == "agencyId") {
addAgencyForm.classList.toggle("d-block");
}
});
How do I properly convert this .on() w/ nested .toggle() method to vanilla JS?
const agencyId = document.querySelector("#agencyId");
const addAgencyForm = document.querySelector("#addAgencyForm");
agencyId.addEventListener("change", (event) => {
if (event.target && event.target.id == "agencyId") {
addAgencyForm.classList.toggle("d-block");
}
});
.box {
height: 100px;
width: 100px;
background-color: red;
}
.d-none {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
<form>
<div class="row">
<div class="col-sm-12 col-lg-4">
<div class="form-group">
<label for="agencyId" class="control-label is-required">Agency</label>
<select class="form-control" id="agencyId" data-placeholder="Optionally, assign new contact to an agency..." name="agency.id">
<option value="">Select</option>
<option value="0">Create Agency</option>
<option value="1">Department of Corrections</option>
<option value="2">Defense Advocates Office</option>
</select>
</div>
</div>
</div>
</form>
</div>
<hr>
<div class="box d-none" id="addAgencyForm"></div>