HTML+JS: Checkboxen als Pflichtfeld
Autor: Ralf v.d.Mark
eingetragen: Mittwoch, 19. Januar 2022 um 12:55 Uhr (3/2022 Kalenderwoche)
geändert: Mittwoch, 19. Januar 2022 um 13:42 Uhr (3/2022 Kalenderwoche)
Keywords: Checkboxen Pflichtfeld required input type mutiple
Kategorien: HTML, JavaScript, PHP,
Text:
Bei "multiplen" Checkboxen ist es ohne JavaScript nicht möglich, das mit der HTML-Validierung zu schaffen.
Über das untenstehende Skript sollte es funktionieren.
Quellcode:
<label class="checkbox-container"><span>Art der Anfrage*</span></label>
<label class="zweiter-checkbox-container">
<input type="checkbox" id="f_anfrage_anfrageart_5" name="f_anfrage[anfrageart][]"
value="5" required="required"
onchange="pruefeCheckboxenAnfragearten();">
<span>Aktionspost</span>
</label>
<label class="zweiter-checkbox-container">
<input type="checkbox" id="f_anfrage_anfrageart_3" name="f_anfrage[anfrageart][]"
value="3" required="required"
onchange="pruefeCheckboxenAnfragearten();">
<span>Beschwerde über Dritte</span>
</label>
<label class="zweiter-checkbox-container">
<input type="checkbox" id="f_anfrage_anfrageart_1" name="f_anfrage[anfrageart][]"
value="1" required="required"
onchange="pruefeCheckboxenAnfragearten();">
<span>Information</span>
</label>
<label class="zweiter-checkbox-container">
<input type="checkbox" id="f_anfrage_anfrageart_4" name="f_anfrage[anfrageart][]"
value="4" required="required"
onchange="pruefeCheckboxenAnfragearten();">
<span>Mitteilungen/Hinweise</span>
</label>
<label class="zweiter-checkbox-container">
<input type="checkbox" id="f_anfrage_anfrageart_2" name="f_anfrage[anfrageart][]"
value="2" required="required"
onchange="pruefeCheckboxenAnfragearten();">
<span>Politikkritik</span>
</label>
<script>
function pruefeCheckboxenAnfragearten() {
const inputs = document.querySelectorAll('[name="f_anfrage[anfrageart][]"]');
//alert("inputs.length: [" + inputs.length + "]");
let isAtLeastOneCheckboxSelected = false;
for(let i = inputs.length-1; i >= 0; --i) {
if (inputs[i].checked) {
isAtLeastOneCheckboxSelected = true;
break;
}
}
//alert("Checkbox-Checked?: [" + isAtLeastOneCheckboxSelected + "]");
if (isAtLeastOneCheckboxSelected == false) {
//Wenn keine Checkbox gecheckt, dann das Required-Attribut reinschreiben.
for(let i = inputs.length-1; i >= 0; --i) {
wert = inputs[i].value;
//alert("id-Wert(NOT Checked): [f_anfrage_anfrageart_" + wert + "]");
document.getElementById("f_anfrage_anfrageart_" + wert)
.setAttribute('required', 'required');
}
//alert("Sie haben keine Anfrageart ausgewählt");
return false;
} else {
//Wenn mindestens eine angehakt ist, dann das Required-Attribut entfernen
for(let i = inputs.length-1; i >= 0; --i) {
wert = inputs[i].value;
//alert("id-Wert(checked): [f_anfrage_anfrageart_" + wert + "]");
document.getElementById("f_anfrage_anfrageart_" + wert)
.removeAttribute('required');
}
//alert("Super, alles klar!");
return true;
}//ENDE: else ==> if ()
}
</script>