jQuery en checkboxes vraagstuk

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BP_LOZ
  • Registratie: Mei 2006
  • Laatst online: 12-10-2024
Beste,

Ik wil graag de waarden van meerdere checkboxen doorgeven aan een PHP pagina middels jQuery.
Het toevoegen van de waarden is geen enkel probleem. Echter, wanneer ik een checkbox uncheck zou ik de waarde ook willen verwijderen uit het array. Maar ik heb geen idee hoe?.

Wie kan me een zetje geven in de goede richting?

Alvast bedankt!


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script>
// Brand filter checkboxes
var brands = [];
$('.filterbrand input[type="checkbox"]').change(function() {
    if($(this).is(':checked')) {
        if(this.checked){brands.push($(this).attr("value"));} 
    }
    $('.loading').show();
    
    var product_categories_q    = $('#product_categories_q').val();
    var product_categories_filter   = $("select option:selected").val();
    
    $.ajax({
        type:"POST",
        url: "php/product_categories_results.php",
        cache:false,
        data: "product_categories_q=" + product_categories_q + "&product_categories_filter=" + product_categories_filter + "&product_brand_filter=" + brands,
        success: function(data){
            $('#subcategoriesRightWrapperContent').html(data);
            $('.loading').hide();
        }
    });
    return(false);
});
</script>

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Op regels 5-7 in de if() voeg je een waarde toe (push()) maar je haalt 'm er nooit uit wanneer deze unchecked is. Misschien dat een else{} je daar mee kan helpen. :)

[ Voor 5% gewijzigd door OkkE op 10-08-2012 11:33 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Heb je er al over gedacht om dit gewoon door jQuery te laten afhandelen?

http://api.jquery.com/serialize/

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • BP_LOZ
  • Registratie: Mei 2006
  • Laatst online: 12-10-2024
Het volgende wil ik bereiken:
Onderstaande PHP code haalt de unieke merken op bij een bepaalde productcategorie. Hierbij word een list gegenereerd met de resultaten
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$q = "SELECT DISTINCT brand FROM product WHERE product_categories_id = $product_categories_id ORDER BY brand";
$r = mysql_query($q);
$i = 0;
while($d = mysql_fetch_array($r)){
    echo "
    <li class=\"filterbrand\">
        <label for=\"filter".$d['brand']."\">
            <input id=\"filter".$d['brand']."\" type=\"checkbox\" name=\"brand".$i++."\" value=\"".strtolower($d['brand'])."\" />".ucfirst($d['brand'])."
        </label>
    </li>
    ";
}
?>

Het volgende JS moet de resultaten van de gekozen checkboxes doorgeven aan het php script welke op zijn beurt de beschikbare resultaten laat zien/uitfilterd.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$('.filterbrand input[type="checkbox"]').change(function(){
    var brands                     = $("#frm_filterbrand").serialize();
    var product_categories_q       = $('#product_categories_q').val();
    var product_categories_filter  = $("select option:selected").val();
        
    $.ajax({
        type:'POST',
        url: "php/product_categories_results.php",
        data: "product_categories_q=" + product_categories_q + "&product_categories_filter=" + product_categories_filter + "&product_brands_filter=" + brands,
        success: function(data){
            $('#subcategoriesRightWrapperContent').html(data);
            $('.loading').hide();
        }
    });
    return(false);
});

Als ik een print_r($_POST) doe krijg ik onderstaand resultaat. Hier kan ik niet veel mee, of ik zie iets lelijk over het hoofd.
code:
1
2
3
4
5
6
7
8
9
10
Array ( 
    [product_categories_q]      => categorie 
    [product_categories_filter] => sortering 
    [product_brands_filter]     => brand1=sony
        [brand2] => kenwood 
        [brand3] => philips 
        [brand4] => lg
        [brand5] => samsung
        [brand6] => sharp
    )

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Volgens mij hoef je alleen maar, door middel van iets als Array.splice(), de waarde die je unchecked uit je "brands" variabele te gooien... :?

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 12-09 18:50
Je kan/mag checkboxen dezelfde naam geven.
Bij een POST (of JQuery serialize) worden dan alle geselecteerde velden/waardes meegenomen.

let the past be the past.

Pagina: 1