JQUERY: récupère les id de la case cochée et non cochée
J'ai pas tellement de cases à cocher:
<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>
...................<>
Maintenant, ce que j'essaie de faire est d'obtenir tous les ID des cases à cocher avec check, et pas de check et mettre dans un tableau. Quelque chose comme ceci:
"fruitsGranted":["apple","lomboy","orange"]; //check is true
"fruitsDenied":["mango","santol","guava"]; //check false
Peut plaire à quelqu'un me montrer comment le faire.? grâce.
21
demandé sur
jayAnn
2011-08-01 20:10:16
4 réponses
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"));
}
});
41
répondu
James Montagne
2012-12-07 14:37:24
Je pense que j'ai une version plus courte ici:
var idSelector = function() { return this.id; };
var fruitsGranted = $(":checkbox:checked").map(idSelector).get();
var fruitsDenied = $(":checkbox:not(:checked)").map(idSelector).get();
Comme Vous pouvez le voir en action ici: http://jsfiddle.net/XPMjK/3/
23
répondu
Mo Valipour
2011-08-01 16:49:52
Je ferais ceci quelque chose comme ceci:
var all, checked, notChecked;
all = $("input:checkbox");
checked = all.filter(":checked");
notChecked = all.not(":checked)");
Après cela, vous pouvez utiliser jQuery.carte pour obtenir les identifiants de chaque collection.
var checkedIds = checked.map(function() {
return this.id;
});
var notCheckedIds = notChecked.map(function() {
return this.id;
});
5
répondu
John Kalberer
2011-08-01 16:36:02
Cela peut être fait en utilisant .map
, bien que dans ce cas il n'est pas vraiment différent de l'utilisation de .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);
});
Vous pouvez le tester ici.
2
répondu
karim79
2011-08-01 16:43:03