Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jquery and Django multiple checkbox

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

like image 624
spyder Avatar asked Oct 23 '25 18:10

spyder


1 Answers

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.

like image 151
gavoja Avatar answered Oct 26 '25 07:10

gavoja



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!