Browse Source

Run conditional logic on load in case radio input is already checked

pull/29/head
baarkerlounger 4 years ago
parent
commit
f6317c522c
  1. 35
      app/javascript/controllers/conditional_question_controller.js

35
app/javascript/controllers/conditional_question_controller.js

@ -1,22 +1,27 @@
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
initialize() {
this.displayConditional()
}
displayConditional() {
let question = this.element.name;
let selected = this.element.value;
let conditional_for = JSON.parse(this.element.dataset.info);
if(this.element.checked) {
let selected = this.element.value
let conditional_for = JSON.parse(this.element.dataset.info)
Object.entries(conditional_for).forEach(([key, values]) => {
let el = document.getElementById(key + "_div");
if(values.includes(selected)) {
el.style.display = "block";
} else {
el.style.display = "none";
let buttons = document.getElementsByName(key)
Object.entries(buttons).forEach(([idx, button]) => {
button.checked = false;
});
}
});
Object.entries(conditional_for).forEach(([key, values]) => {
let el = document.getElementById(key + "_div")
if(values.includes(selected)) {
el.style.display = "block"
} else {
el.style.display = "none"
let buttons = document.getElementsByName(key)
Object.entries(buttons).forEach(([idx, button]) => {
button.checked = false;
})
}
})
}
}
}

Loading…
Cancel
Save