Я пытаюсь динамически добавлять флажки внутри div.
Я хочу, чтобы функция javascript выполняла следующие действия:
Это то, что я сделал до сих пор:
var chkArray = [];
$(".Checked:checked").each(function () {
chkArray.push($(this).attr("id"));
});
var selected;
selected = chkArray.join(',') + ",";
if (selected.length > 1) {
return chkArray;
}
Я не уверен, почему вы присоединяетесь к массиву в конце - поэтому я его не включил. Но вот основной метод. $.map()
будет перебирать массив флажков и возвращать идентификатор текущего элемента, только если он установлен. $.map()
затем сохраняет возвращаемые значения в новом массиве (chkArray
):
$checkbox = $('.Checked');
function checkArray(){
var chkArray = [];
chkArray = $.map($checkbox, function(el){
if(el.checked) { return el.id };
});
console.log(chkArray);
}
Я протестировал George jsfiddle и не смог заставить его работать, но отредактировал его код и заставил его работать, вы можете попробовать, это работает
$('#PostAlert').click(function GetID() {
$checkbox = $('.CheckBxMSG');
var chkArray = [];
chkArray = $.map($checkbox, function (el) {
if (el.checked) { return el.id };
});
alert(chkArray);
})
Это то, что я сделал бы:
var checkedArray = [];
$(":checkbox").change(function(){
if((this).checked){
checkedArray.push(this.id);
}
else{
checkedArray.splice(checkedArray.indexOf(this.id), 1);
}
//you can call your function here if you need to act on this.
});
Вместо этого возьмите свой идентификатор формы и при отправке проверяйте, все флажки, отмеченные как это
$("#formid input:checkbox:checked").each(function() {
var chkArray = [];
chkArray.push($(this).id());
});
Это должно делать то, что вы описали
var checkboxes = $("input[type=checkbox]");
var r = [];
checkboxes.on("change",function(e){
if(!e.target.id){
return;
}
if(e.target.checked){
r.push(e.target.id);
}
else{
var index = r.indexOf(e.target.id)
if(~index){
r.splice(index, 1);
}
}
console.log(r);
});
Checked
на div или на флажках? В вашем коде вы создаете строку из массива, чтобы проверить, есть ли что-нибудь в массиве. Почему бы не проверить длину массива вместо этого?