2011-05-28 4 views
0

J'ai une liste de sélection multiple. J'appelle une fonction dans l'événement on-change et je passe la valeur de la liste multiselect. Quand je le fais, j'obtiens la première vallée sélectionnée et pas toute la valeur multi-sélectionnée.Liste de sélection multiple

<select name="cat" multiple="multiple" class="main" onChange="javascript:get_list(this.value);"> 
    <option value="">--Select Category--</option> 
    <?php 
    ////////////////display category////////////////// 
    $cat_details=mysql_query("SELECT category_id,category 
           FROM category_tb 
          ORDER BY category"); 

    while([email protected]_fetch_array($cat_details)){?>       
     <option value="<?=$cat_data['category_id'];?>"<? 
     if($_REQUEST['cat']==$cat_data['category_id']){?> selected="selected"<?php } ?>><?=$cat_data['category'];?></option> 
    <? } ?>       
</select> 

Comment puis-je transmettre toute la valeur sélectionnée de multi-select à ajax?

+0

Ajax? Vous devrez corriger get_list, mais nous ne pouvons pas voir ce qui ne va pas parce que vous ne l'avez pas inclus. – Quentin

Répondre

0

Remplacez name="cat" par name="cat[]". Toutes les valeurs sélectionnées seront ensuite stockées dans un tableau.

0

Vous devez définir le nom du champ de sélection pour

cat[] 

et vous recevrez un tableau de chat des valeurs

0

essayer quelque chose comme ça

this.options[this.selectedIndex].value 

juste remarqué est un multiple select, besoin d'un javascript un peu plus complexe pour cela

voir cet ex ample http://www.mredkj.com/tutorials/tutorial004.html

+0

peut-être vous pouvez expliquer au cas où le lien devait disparaître un jour – Ibu

0

Vous devrez parcourir toutes les options et vérifier la propriété "selected" pour obtenir toutes les valeurs sélectionnées.

<!-- html --> 
<select name="cat" multiple="multiple" class="main" onChange="javascript:get_list(this);"> 

// Javascript 
function get_list(sel) { 
    var i = sel.options.length, 
     opt = null, 
     selValues = []; 

    for (; i--;) { 
     opt = sel.options[i]; 
     if (opt.selected) { 
      selValues.push(opt.value); 
     } 
    } 

    console.log(selValues); 
} 
Questions connexes