JQUERY: Abrufen der IDs der aktivierten und nicht aktivierten CheckBox

Lesezeit: 3 Minuten

Ich habe diese nicht so viele Checkboxen:

<input type="checkbox" id="mango" value="mango" /> <label>MANGO</label><br>
<input type="checkbox" id="santol" value="santol" /> <label>SANTOL</label><br>
<input type="checkbox" id="guava" value="guava" /> <label>GUAVA</label><br>
<input type="checkbox" id="lomboy" value="lomboy" /> <label>LOMBOY</label><br>
<input type="checkbox" id="apple" value="apple" /> <label>APPLE</label><br>
<input type="checkbox" id="orange" value="orange" /> <label>ORANGE</label><br>
 ...................<>

Jetzt versuche ich, alle IDs von Kontrollkästchen mit Häkchen und ohne Häkchen zu erhalten und in ein Array einzufügen. Etwas wie das:

"fruitsGranted":["apple","lomboy","orange"]; //check is true
"fruitsDenied":["mango","santol","guava"];  //check false

kann mir bitte jemand zeigen wie das geht.? Danke.

Benutzer-Avatar
James Montagne

var someObj={};
someObj.fruitsGranted=[];
someObj.fruitsDenied=[];

$("input:checkbox").each(function(){
    var $this = $(this);

    if($this.is(":checked")){
        someObj.fruitsGranted.push($this.attr("id"));
    }else{
        someObj.fruitsDenied.push($this.attr("id"));
    }
});

http://jsfiddle.net/UqrYJ/

  • wie kann ich alarmieren fruitsGranted und fruitsDenied?

    – JayAnn

    1. August 2011 um 16:19 Uhr

  • alert(someObj.fruitGranted); Sie müssen es nicht in einem solchen Objekt haben, es ist nur so, dass Ihr Markup es so aussehen lässt, als wollten Sie ein Objekt haben.

    – James Montagne

    1. August 2011 um 16:21 Uhr

  • @JayAnn: alert ( someObj.fruitsGranted.join(",") );

    – Naveen

    1. August 2011 um 16:23 Uhr

  • Der Antwort wurde eine Geige hinzugefügt.

    – James Montagne

    1. August 2011 um 16:23 Uhr

  • @Techy {} ist ein leeres Objekt.

    – James Montagne

    12. Mai 2014 um 14:46 Uhr

Ich glaube, ich habe hier eine kürzere Version:

var idSelector = function() { return this.id; };
var fruitsGranted = $(":checkbox:checked").map(idSelector).get();
var fruitsDenied = $(":checkbox:not(:checked)").map(idSelector).get();

Sie können es hier in Aktion sehen: http://jsfiddle.net/XPMjK/3/

  • Was ist die Anforderung für den Funktionsaufruf get() hier, es scheint, dass $(“:checkbox:checked”).map(idSelector) die Aufgabe selbst erledigen könnte?

    – Technisches Lächeln

    16. Januar 2016 um 15:29 Uhr

  • .get() konvertiert ein jquery-Array in ein natives Array. Ich denke, man könnte auch ohne leben. — Sie können den Unterschied bezeugen, indem Sie eine jquery-Funktion aufrufen (z .find()) auf das Ergebnis und Sie können den Unterschied sehen

    – Mo Valipour

    16. Januar 2016 um 17:44 Uhr

Benutzer-Avatar
Johann Kalberer

Ich würde das ungefähr so ​​machen:

var all, checked, notChecked;
all = $("input:checkbox");
checked = all.filter(":checked");
notChecked = all.not(":checked)");

Danach können Sie jQuery.map verwenden, um die IDs jeder Sammlung abzurufen.

var checkedIds = checked.map(function() {
    return this.id;
});

var notCheckedIds = notChecked.map(function() {
    return this.id;
});

  • Das is() Funktion sollte auf geändert werden filter() Funktion. Das is() Die Funktion gibt einen booleschen Wert zurück.

    – Sanghyun Lee

    1. August 2011 um 16:26 Uhr

Benutzer-Avatar
karim79

Dies kann mit erfolgen .mapobwohl es sich in diesem Fall nicht wirklich von der Verwendung unterscheidet .each:

$(":checkbox").change(function() {
    var notChecked = [], checked = [];
    $(":checkbox").map(function() {
        this.checked ? checked.push(this.id) : notChecked.push(this.id);
    });
    alert("checked: " + checked);
    alert("not checked: " + notChecked);
});

Hier können Sie es testen.

1146130cookie-checkJQUERY: Abrufen der IDs der aktivierten und nicht aktivierten CheckBox

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy