37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
function checkValidity() {
|
|
if (this.required) {
|
|
var optId = this.selectedIndex;
|
|
var selOpt = this.options[optId];
|
|
if (selOpt.value == '') {
|
|
this.parentNode.classList.add('is-invalid');
|
|
} else {
|
|
this.parentNode.classList.remove('is-invalid');
|
|
}
|
|
}
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded", function(event) {
|
|
var all_selects = document.getElementsByTagName('select');
|
|
for (var i in all_selects) {
|
|
if (!all_selects.hasOwnProperty(i)) {
|
|
continue;
|
|
}
|
|
var xsel = all_selects[i];
|
|
var xvalue = xsel.dataset.value;
|
|
//console.log('Value of %o = %o', xsel, xvalue);
|
|
// Walk all options, compare to desired value and set if matches
|
|
for (var o in xsel.options) {
|
|
if (xsel.options[o].value == xvalue) {
|
|
xsel.selectedIndex = o;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Add eventlistener to change is-invalid state and run once
|
|
xsel.addEventListener('change', checkValidity);
|
|
var event = document.createEvent('HTMLEvents');
|
|
event.initEvent('change', true, true);
|
|
xsel.dispatchEvent(event);
|
|
}
|
|
});
|