HTML Aktivieren Sie nur ein Kontrollkästchen in einer Gruppe


125

Wie kann ich einem Benutzer nur erlauben, nur ein Kontrollkästchen zu aktivieren?

Ich weiß, dass Optionsfelder "ideal" sind, aber für meinen Zweck ... ist es nicht.

Ich habe ein Feld, in dem Benutzer eine oder beide Optionen auswählen müssen, aber nicht beide. Das Problem ist, dass meine Benutzer auch ihre Option abwählen können müssen. Hier schlagen Optionsfelder fehl, da Sie nach Auswahl der Gruppe eine Option auswählen müssen.

Ich werde die Informationen über PHP validieren, aber ich möchte die Benutzer trotzdem auf eine Antwort beschränken, wenn sie sie geben möchten.


1
Dies ist nur mit HTML nicht möglich. Sie benötigen JavaScript. Wenn Sie für jQuery offen sind, kann ich Ihnen eine schnelle Lösung geben.
Surreale Träume

12
Was ist mit einem zusätzlichen Optionsfeld mit der Bezeichnung "keine"?
FelipeAls

2
Eine dritte Option passt nicht gut zu meinem Design ... aber eine gute Alternative :)
user962449

2
Das Kontrollkästchen mit einer einzigen Auswahl ist eigentlich ein Optionsfeld. Wird das die Benutzer nicht überraschen?
Gherman

@ Surreal Dreams Es könnte in HTML gemacht werden, siehe meine Antwort. In den meisten Fällen ist JS jedoch einfacher und es sind keine Hacks erforderlich.
SamGoody

Antworten:


179

Dieses Snippet wird:

  • Gruppierung wie Optionsfelder zulassen
  • Benimm dich wie Radio
  • Alle abwählen lassen

// the selector will match all input controls of type :checkbox
// and attach a click event handler 
$("input:checkbox").on('click', function() {
  // in the handler, 'this' refers to the box clicked on
  var $box = $(this);
  if ($box.is(":checked")) {
    // the name of the box is retrieved using the .attr() method
    // as it is assumed and expected to be immutable
    var group = "input:checkbox[name='" + $box.attr("name") + "']";
    // the checked state of the group/box on the other hand will change
    // and the current value is retrieved using .prop() method
    $(group).prop("checked", false);
    $box.prop("checked", true);
  } else {
    $box.prop("checked", false);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


<div>
  <h3>Fruits</h3>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[1][]" />Kiwi</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[1][]" />Jackfruit</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[1][]" />Mango</label>
</div>
<div>
  <h3>Animals</h3>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[2][]" />Tiger</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[2][]" />Sloth</label>
  <label>
    <input type="checkbox" class="radio" value="1" name="fooby[2][]" />Cheetah</label>
</div>


3
Die richtige Verwendung wäre, $ (this) .is (": check") zu verwenden. Das "is", um zu überprüfen, ob das Kontrollkästchen in der if {...} else {...} here ... jsfiddle aktiviert wurde .net / zGEaa / 31
Sergioadh

2
Beachten Sie, dass .attr nicht mehr funktioniert. Verwenden Sie stattdessen .prop ("markiert") für neuere Versionen von jQuery
user871784

@ user871784 - Danke für das Heads-up ... Ich habe die Geige aktualisiert!
bPratik

3
Sie haben den Radio-Selektor verpasst: $ ("input: checkbox.radio")
Sven

@Sven - In diesem Beispiel wäre dies ein zu spezifischer Selektor. Wenn die Seite jedoch weitere Kontrollkästchen enthält, die dieses Verhalten nicht aufweisen sollten, .radiohilft die Verwendung des Selektors. Vielen Dank für den Hinweis :)
bPratik

101

Sie möchten einen change()Handler binden, damit das Ereignis ausgelöst wird, wenn sich der Status eines Kontrollkästchens ändert. Deaktivieren Sie dann einfach alle Kontrollkästchen außer dem, das den Handler ausgelöst hat:

$('input[type="checkbox"]').on('change', function() {
   $('input[type="checkbox"]').not(this).prop('checked', false);
});

Hier ist eine Geige


Was die Gruppierung betrifft, wenn Ihr Kontrollkästchen "Gruppen" alle Geschwister waren:

<div>
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>  
<div>
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>   
<div>
    <input type="checkbox" />
    <input type="checkbox" />
    <input type="checkbox" />
</div>

Sie könnten dies tun:

$('input[type="checkbox"]').on('change', function() {
   $(this).siblings('input[type="checkbox"]').prop('checked', false);
});

Hier ist noch eine Geige


Wenn Ihre Kontrollkästchen werden von einem anderen Attribute gruppiert, wie name:

<input type="checkbox" name="group1[]" />
<input type="checkbox" name="group1[]" />
<input type="checkbox" name="group1[]" />

<input type="checkbox" name="group2[]" />
<input type="checkbox" name="group2[]" />
<input type="checkbox" name="group2[]" />

<input type="checkbox" name="group3[]" />
<input type="checkbox" name="group3[]" />
<input type="checkbox" name="group3[]" />

Sie könnten dies tun:

$('input[type="checkbox"]').on('change', function() {
    $('input[name="' + this.name + '"]').not(this).prop('checked', false);
});

Hier ist noch eine Geige


Ich mag deinen (letzten) Code. Sehr kurz und immer noch klar. Ich war mir nicht sicher, ob die Option "Ändern" ausgelöst wird, wenn Sie die anderen Kontrollkästchen ändern, aber dies war nicht der Fall, als ich es versuchte. Also bevorzuge ich deinen Code. Vielen Dank! :)
Frank Fajardo

Ich mag das wirklich, ich muss eine kleine Änderung für meine Bedürfnisse vornehmen. Ich habe zwei Elemente, daher ist das erste Element standardmäßig aktiviert, und wenn es deaktiviert ist, wird das zweite Element aktiviert. Dies hat mir den Einstieg erleichtert.
John.Weland

Hallo @ john.weland - meinst du so etwas wie dies ?
Billyonecan

@billyonecan fast genau, aber mit der Fähigkeit, eine bestimmte Gruppierung zu zielen. so . Danke
john.weland

2
plus eins der Einfachheit halber
Chad

26

Optionsfelder sind ideal. Sie benötigen lediglich eine dritte Option "weder", die standardmäßig ausgewählt ist.


1
Das ist eine gute Lösung, aber ich bleibe lieber bei Kontrollkästchen, weil mein Design für eine dritte Option nicht ideal ist.
user962449

6
Ich würde dringend empfehlen, das Design zu ändern. Häkchen 0 oder 1 dieser 2 Optionen ist kein allgemeines Muster und für Benutzer nicht so intuitiv wie Häkchen 1 dieser 3 Optionen
Quentin

4
Warum sollte ich mein gesamtes Design für 2 Kontrollkästchen ändern?
user962449

9
Wenn eine solche Änderung erfordern würde, dass Sie "Ihr gesamtes Design" ändern, deutet dies darauf hin, dass das Design in erster Linie viel zu unflexibel ist.
Quentin

10
Es ist nicht unflexibel, es sieht einfach nicht richtig aus ... Es mag auf Formularen und solchen Anwendungen gut aussehen, aber wir haben unterschiedliche Verwendungsmöglichkeiten für unsere Kontrollkästchen.
user962449

12

Es gibt bereits einige Antworten darauf, die auf reinem JS basieren, aber keine davon ist so präzise, ​​wie ich es gerne hätte.

Hier ist meine Lösung, die auf der Verwendung von Namensschildern (wie bei Optionsfeldern) und einigen Zeilen Javascript basiert.

function onlyOne(checkbox) {
    var checkboxes = document.getElementsByName('check')
    checkboxes.forEach((item) => {
        if (item !== checkbox) item.checked = false
    })
}
<input type="checkbox" name="check" onclick="onlyOne(this)">
<input type="checkbox" name="check" onclick="onlyOne(this)">
<input type="checkbox" name="check" onclick="onlyOne(this)">
<input type="checkbox" name="check" onclick="onlyOne(this)">


Danke, dieser hat es für mich von all den anderen getan =)
kaya

6
$("#myform input:checkbox").change(function() {
    $("#myform input:checkbox").attr("checked", false);
    $(this).attr("checked", true);
});

Dies sollte für eine beliebige Anzahl von Kontrollkästchen im Formular funktionieren. Wenn Sie andere haben, die nicht Teil der Gruppe sind, richten Sie die Selektoren für die entsprechenden Eingaben ein.


Ja, Sir :) Es ist in Ordnung, ich habe etwas gefunden, das für mich funktioniert, obwohl Ihre Lösung ziemlich einfach aussieht. Ich habe wahrscheinlich etwas falsch gemacht. Trotzdem danke.
user962449

5

Hier ist eine einfache HTML- und JavaScript-Lösung, die ich bevorzuge:

// js Funktion, mit der jeweils nur ein Kontrollkästchen für einen Wochentag aktiviert werden kann:

function checkOnlyOne(b){

var x = document.getElementsByClassName('daychecks');
var i;

for (i = 0; i < x.length; i++) {
  if(x[i].value != b) x[i].checked = false;
}
}


Day of the week:
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Monday" />Mon&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Tuesday" />Tue&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Wednesday" />Wed&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Thursday" />Thu&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Friday" />Fri&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Saturday" />Sat&nbsp;&nbsp;&nbsp;
<input class="daychecks" onclick="checkOnlyOne(this.value);" type="checkbox" name="reoccur_weekday" value="Sunday" />Sun&nbsp;&nbsp;&nbsp;<br /><br />

4

Möge dieser Code Ihnen helfen.

$(document).ready(function(){
$('.slectOne').on('change', function() {
   $('.slectOne').not(this).prop('checked', false);
   $('#result').html($(this).data( "id" ));
   if($(this).is(":checked"))
   	$('#result').html($(this).data( "id" ));
   else
   	$('#result').html('Empty...!');
});
});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

</head>
<body>
<input type="checkbox" class="slectOne" data-id="1 selected"/>
<input type="checkbox" class="slectOne" data-id="2 selected"/>
<input type="checkbox" class="slectOne" data-id="3 selected"/>
<input type="checkbox" class="slectOne" data-id="4 selected"/>
<input type="checkbox" class="slectOne" data-id="5 selected"/>
<input type="checkbox" class="slectOne" data-id="6 selected"/>
<input type="checkbox" class="slectOne" data-id="7 selected"/>
<input type="checkbox" class="slectOne" data-id="8 selected"/>
<input type="checkbox" class="slectOne" data-id="9 selected"/>
<input type="checkbox" class="slectOne" data-id="10 selected"/>
<span id="result"></span>
</body>
</html>

Arbeitslink Klicken Sie hier


3

Aufbauend auf der Antwort von Billyonecan können Sie den folgenden Code verwenden, wenn Sie dieses Snippet für mehr als ein Kontrollkästchen benötigen (vorausgesetzt, sie haben unterschiedliche Namen).

    $('input.one').on('change', function() {
        var name = $(this).attr('name');
        $('input[name='+name+'].one').not(this).prop('checked', false);
    }); 

3

Während JS wahrscheinlich der richtige Weg ist, könnte dies nur mit HTML und CSS erfolgen.

Hier haben Sie ein gefälschtes Optionsfeld, das wirklich eine Bezeichnung für ein echtes verstecktes Optionsfeld ist. Auf diese Weise erhalten Sie genau den Effekt, den Sie benötigen.

<style>
   #uncheck>input { display: none }
   input:checked + label { display: none }
   input:not(:checked) + label + label{ display: none } 
</style>

<div id='uncheck'>
  <input type="radio" name='food' id="box1" /> 
  Pizza 
    <label for='box1'>&#9678;</label> 
    <label for='box0'>&#9673;</label>
  <input type="radio" name='food' id="box2" /> 
  Ice cream 
    <label for='box2'>&#9678;</label> 
    <label for='box0'>&#9673;</label>
  <input type="radio" name='food' id="box0" checked />
</div>

Sehen Sie es hier: https://jsfiddle.net/tn70yxL8/2/

Dies setzt voraus, dass Sie nicht auswählbare Beschriftungen benötigen.

Wenn Sie bereit waren, die Beschriftungen einzuschließen, können Sie das Wiederholen der Beschriftung "deaktivieren" technisch vermeiden, indem Sie den Text in CSS ändern. Siehe hier: https://jsfiddle.net/7tdb6quy/2/


1

Beispiel mit AngularJs

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!DOCTYPE html>
<html>

<head>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
  <script>
    angular.module('app', []).controller('appc', ['$scope',
      function($scope) {
        $scope.selected = 'other';
      }
    ]);
  </script>
</head>

<body ng-app="app" ng-controller="appc">
  <label>SELECTED: {{selected}}</label>
  <div>
    <input type="checkbox" ng-checked="selected=='male'" ng-true-value="'male'" ng-model="selected">Male
    <br>
    <input type="checkbox" ng-checked="selected=='female'" ng-true-value="'female'" ng-model="selected">Female
    <br>
    <input type="checkbox" ng-checked="selected=='other'" ng-true-value="'other'" ng-model="selected">Other
  </div>



</body>

</html>


1

Mit einfachem altem Javascript.

<html>
<head>
</head>
<body>
<input type="checkbox" name="group1[]" id="groupname1" onClick="toggle(1,'groupname')"/>
<input type="checkbox" name="group1[]" id="groupname2" onClick="toggle(2,'groupname')"  />
<input type="checkbox" name="group1[]" id="groupname3" onClick="toggle(3,'groupname')" />

<input type="checkbox" name="group2[]" id="diffGroupname1" onClick="toggle(1,'diffGroupname')"/>
<input type="checkbox" name="group2[]" id="diffGroupname2" onClick="toggle(2,'diffGroupname')"  />
<input type="checkbox" name="group2[]" id="diffGroupname3" onClick="toggle(3,'diffGroupname')" />
<script>
function toggle(which,group){
var counter=1;
var checkbox=document.getElementById(group+counter);
while(checkbox){
if(counter==which){

}else{
checkbox.checked=false;
}
counter++;
checkbox=document.getElementById(group+counter);
}
}
</script>
</body>
</html>

0

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!DOCTYPE html>
<html>

<head>
  <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
  <script>
    angular.module('app', []).controller('appc', ['$scope',
      function($scope) {
        $scope.selected = 'male';
      }
    ]);
  </script>
</head>

<body ng-app="app" ng-controller="appc">
  <label>SELECTED: {{selected}}</label>
  <div>
    <input type="checkbox" ng-checked="selected=='male'" ng-true-value="'male'" ng-model="selected">Male
    <br>
    <input type="checkbox" ng-checked="selected=='female'" ng-true-value="'female'" ng-model="selected">Female
    <br>
    <input type="checkbox" ng-checked="selected=='other'" ng-true-value="'other'" ng-model="selected">Other
  </div>
</body>
</html>


0

Wenn jemand eine Lösung ohne externe Javascript-Bibliotheken benötigt, können Sie dieses Beispiel verwenden. Eine Gruppe von Kontrollkästchen, die 0..1-Werte zulassen. Sie können auf die Kontrollkästchenkomponente oder den zugehörigen Beschriftungstext klicken.

    <input id="mygroup1" name="mygroup" type="checkbox" value="1" onclick="toggleRadioCheckbox(this)" /> <label for="mygroup1">Yes</label>
    <input id="mygroup0" name="mygroup" type="checkbox" value="0" onclick="toggleRadioCheckbox(this)" /> <label for="mygroup0">No</label>

- - - - - - - - 

    function toggleRadioCheckbox(sender) {
        // RadioCheckbox: 0..1 enabled in a group 
        if (!sender.checked) return;
        var fields = document.getElementsByName(sender.name);
        for(var idx=0; idx<fields.length; idx++) {
            var field = fields[idx];
            if (field.checked && field!=sender)
                field.checked=false;
        }
    }

0

Meine Version: Verwenden Sie Datenattribute und Vanilla JavaScript

<div class="test-checkbox">
    Group One: <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupOne" value="Eat" />Eat</label>
    <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupOne" value="Sleep" />Sleep</label>
    <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupOne" value="Play" />Play</label>
    <br />
    Group Two: <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupTwo" value="Fat" />Fat</label>
    <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupTwo" value="Comfort" />Comfort</label>
    <label>
        <input type="checkbox" data-limit="only-one-in-a-group" name="groupTwo" value="Happy" />Happy</label>
</div>
<script>
    let cbxes = document.querySelectorAll('input[type="checkbox"][data-limit="only-one-in-a-group"]');
    [...cbxes].forEach((cbx) => {
        cbx.addEventListener('change', (e) => {
            if (e.target.checked)
                uncheckOthers(e.target);
        });
    });
    function uncheckOthers (clicked) {
        let name = clicked.getAttribute('name');
        // find others in same group, uncheck them
        [...cbxes].forEach((other) => {
            if (other != clicked && other.getAttribute('name') == name)
                other.checked = false;
        });
    }
</script>

-1

Nekromantie:
Und ohne jQuery für eine Checkbox-Struktur wie diese:

<label>
<input type="checkbox" id="mytrackers_1" name="blubb_1" value="">--- Bitte ausw&#228;hlen ---
</label>
<label>
<input type="checkbox" id="mytrackers_2" name="blubb_2" value="7">Testtracker
</label>
<label>
<input type="checkbox" id="mytrackers_3" name="blubb_3" value="3">Kundenanfrage
</label>
<label>
<input type="checkbox" id="mytrackers_4" name="blubb_4" value="2">Anpassung
</label>
<label>
<input type="checkbox" id="mytrackers_5" name="blubb_5" value="1" checked="checked" >Fehler
</label>
<label>
<input type="checkbox" id="mytrackers_6" name="blubb_6" value="4">Bedienung
</label>
<label>
<input type="checkbox" id="mytrackers_7" name="blubb_7" value="5">Internes
</label>
<label>
<input type="checkbox" id="mytrackers_8" name="blubb_8" value="6">&#196;nderungswunsch
</label>

du würdest es so machen:

    /// attach an event handler, now or in the future, 
    /// for all elements which match childselector,
    /// within the child tree of the element maching parentSelector.
    function subscribeEvent(parentSelector, eventName, childSelector, eventCallback) {
        if (parentSelector == null)
            throw new ReferenceError("Parameter parentSelector is NULL");
        if (childSelector == null)
            throw new ReferenceError("Parameter childSelector is NULL");
        // nodeToObserve: the node that will be observed for mutations
        var nodeToObserve = parentSelector;
        if (typeof (parentSelector) === 'string')
            nodeToObserve = document.querySelector(parentSelector);
        var eligibleChildren = nodeToObserve.querySelectorAll(childSelector);
        for (var i = 0; i < eligibleChildren.length; ++i) {
            eligibleChildren[i].addEventListener(eventName, eventCallback, false);
        } // Next i 
        // /programming/2712136/how-do-i-make-this-loop-all-children-recursively
        function allDescendants(node) {
            if (node == null)
                return;
            for (var i = 0; i < node.childNodes.length; i++) {
                var child = node.childNodes[i];
                allDescendants(child);
            } // Next i 
            // IE 11 Polyfill 
            if (!Element.prototype.matches)
                Element.prototype.matches = Element.prototype.msMatchesSelector;
            if (node.matches) {
                if (node.matches(childSelector)) {
                    // console.log("match");
                    node.addEventListener(eventName, eventCallback, false);
                } // End if ((<Element>node).matches(childSelector))
                // else console.log("no match");
            } // End if ((<Element>node).matches) 
            // else console.log("no matchfunction");
        } // End Function allDescendants 
        // Callback function to execute when mutations are observed
        var callback = function (mutationsList, observer) {
            for (var _i = 0, mutationsList_1 = mutationsList; _i < mutationsList_1.length; _i++) {
                var mutation = mutationsList_1[_i];
                // console.log("mutation.type", mutation.type);
                // console.log("mutation", mutation);
                if (mutation.type == 'childList') {
                    for (var i = 0; i < mutation.addedNodes.length; ++i) {
                        var thisNode = mutation.addedNodes[i];
                        allDescendants(thisNode);
                    } // Next i 
                } // End if (mutation.type == 'childList') 
                // else if (mutation.type == 'attributes') { console.log('The ' + mutation.attributeName + ' attribute was modified.');
            } // Next mutation 
        }; // End Function callback 
        // Options for the observer (which mutations to observe)
        var config = { attributes: false, childList: true, subtree: true };
        // Create an observer instance linked to the callback function
        var observer = new MutationObserver(callback);
        // Start observing the target node for configured mutations
        observer.observe(nodeToObserve, config);
    } // End Function subscribeEvent 


    function radioCheckbox_onClick() 
    { 
        // console.log("click", this);
        let box = this;
        if (box.checked) 
        {
            let name = box.getAttribute("name");
            let pos = name.lastIndexOf("_");
            if (pos !== -1) name = name.substr(0, pos);

            let group = 'input[type="checkbox"][name^="' + name + '"]';
            // console.log(group);
            let eles = document.querySelectorAll(group);
            // console.log(eles);
            for (let j = 0; j < eles.length; ++j) 
            {
                eles[j].checked = false;
            }
            box.checked = true;
        }
        else
            box.checked = false;
    }


    // /programming/9709209/html-select-only-one-checkbox-in-a-group
    function radioCheckbox()
    { 
        // on instead of document...
        let elements = document.querySelectorAll('input[type="checkbox"]')

        for (let i = 0; i < elements.length; ++i)
        {
            // console.log(elements[i]);
            elements[i].addEventListener("click", radioCheckbox_onClick, false);

        } // Next i 

    } // End Function radioCheckbox 


    function onDomReady()
    {
        console.log("dom ready");
        subscribeEvent(document, "click", 
            'input[type="checkbox"]', 
            radioCheckbox_onClick
        ); 

        // radioCheckbox();
    }

    if (document.addEventListener) document.addEventListener("DOMContentLoaded", onDomReady, false);
    else if (document.attachEvent) document.attachEvent("onreadystatechange", onDomReady);
    else window.onload = onDomReady;

    function onPageLoaded() {
        console.log("page loaded");
    }

    if (window.addEventListener) window.addEventListener("load", onPageLoaded, false);
    else if (window.attachEvent) window.attachEvent("onload", onPageLoaded);
    else window.onload = onPageLoaded;

-1
//Here is a solution using JQuery    
<input type = "checkbox" class="a"/>one
    <input type = "checkbox" class="a"/>two
    <input type = "checkbox" class="a"/>three
    <script>
       $('.a').on('change', function() {
            $('.a').not(this).prop('checked',false);
    });
    </script>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.