Получить идентификатор отмеченных флажков в списке одним нажатием кнопки

0

У меня есть флажок в каждой строке. У меня есть кнопка, которая удаляет все строки, в которых отмечены флажки. Для этого мне нужно получить идентификатор строк, где установлен флажок. Я написал следующий код. Но не работает. Pls помогает мне, ребята..

Код кнопки: <a class="row-delete" align="left" onclick="deleteItem()"/>

function deleteItem(){
    if (confirm("Are you sure you want to delete?")){               
         $(":checkbox").change(function() {
            var notChecked = [], checked = [];
            $(":checkbox").map(function() {
               this.checked ? checked.push(this.id) : notChecked.push(this.id);
            });
            alert("checked: " + checked);
         });
         deleteAll(checked,0);
    }
}

Что не так в коде выше?

Теги:
scripting
jqgrid

2 ответа

1
Лучший ответ

Вы регистрируете обработчик события change в методе deleteItem который не требуется, вам нужно просто перебрать флажки с помощью.each() и обновить необходимые массивы

Также предпочтительно использовать .each() вместо .map() поскольку вы не возвращаете значения

function deleteItem(){
    if (confirm("Are you sure you want to delete?")){               
        var notChecked = [], checked = [];
        $(":checkbox").each(function() {
            if(this.checked){
                checked.push(this.id);
            } else {
                notChecked.push(this.id);
            }
        });
        alert("checked: " + checked);
        deleteAll(checked,0);
    }
}
1

Удалите onchange function из deleteItem потому что, когда вы click на link она будет re-init при изменении checkbox elements

function deleteItem(){
    if (confirm("Are you sure you want to delete?")){               
         var notChecked = [], checked = [];
         $(":checkbox").each(function() {
            id=this.id;
            this.checked ? checked.push(id) : notChecked.push(id);
         });
         alert("checked: " + checked);
         deleteAll(checked,0);
    }
}

Вы можете создать array of checked checkboxes например,

   $(":checkbox:checked").each(function() {
        checked.push(this.id);
   });

И если вы хотите удалить элементы onclick из флажка, попробуйте,

$(":checkbox").on('click',function() {
   if($(this).is(':checked')){
      alert($(this).attr('id'));// this item is ready to delete
   }
});
  • 0
    Мне нужно удалить из кнопки Удалить все. Я должен передать идентификаторы строки в метод deleteAll ..
  • 1
    Хорошо, тогда не используйте last one метод моего answer

Ещё вопросы

Сообщество Overcoder
Наверх
Меню