Jquery and Django multiple checkbox

django, jquery, python

Solution

From what I see, you do it the way around. You should set the same name on all checkboxes. I don't know why do you send it by GET, I'd suggest sending it by POST.

<input type="checkbox" name="vehicle" value="Bike" />
<input type="checkbox" name="vehicle" value="Car" />
<input type="checkbox" name="vehicle" value="Airplane" />

Then, use getlist() method in your view:

def delete(request):
    values = request.POST.getlist(u'vehicle')
    # Handling goes here.

But anyway, unless you really need to do custom stuff (however special cases are not special enough to break the rules ;), use Django forms. There already is a checkbox list OOTB. I'm not sure why do you even consider using JavaScript in this very case.

Problem

I am a beginner in jquery so please bear with me. I have a jquery function that allows me to select multiple checkboxes and create a string as follows: ``` function getSelectedVals(){ var tmp =[]; $("input[name='checks']").each(function() { if ($(this).attr('checked')) { checked = ($(this).val()); tmp.push(checked); } }); var filters = tmp.join(','); alert(filters) return filters; } ``` I then call a django view function and pass the string as follows: ``` selected = getSelectedVals(); var myurl = "/bills/delete/?id=" + selected; $.ajax({ type: "GET", url: myurl, data: selected, cache: false }); ``` On the server I have a delete view function that iterates over the checkbox values and manipulates a list. ``` def delete(request): global myarray idx = request.GET[u'id'] listidx = idx.split(',') for l in listidx: value = myarray[int(l)] myarray.remove(value) return HttpResponse("/bills/jqtut/") ``` The problem is that on the server all the indexes I am sending as the GET string are not being handled, only half are. Please help me! Thanks

Original source

Related problems