2010-04-14 8 views
0

Ok, je suis remplissage mon multiple boîte de sélection avec des options d'une autre boîte de sélection via javascript comme ceci:

function addAction() 
{ 
    var actions = document.getElementById("actions"); 
    var action_list = document.getElementById("actions_list"); 
    var opt = document.createElement("option"); 
    for (var i=0; i<action_list.options.length; i++) 
    { 
     if (action_list.options[i].text == actions.options[actions.selectedIndex].text) 
      return; 
    } 
    action_list.options.add(opt); 
    opt.text = actions.options[actions.selectedIndex].text; 
    opt.value = actions.options[actions.selectedIndex].value; 
} 

function removeActions() 
{ 
    var action_list = document.getElementById("actions_list"); 
    for(i=action_list.options.length-1;i>=0;i--) 
    { 
     if (action_list.options[i].selected) 
      action_list.remove(i); 
    } 
} 

Maintenant, la $layout_actions[] suivante est de retour VIDES quand j'ajouter des valeurs de 1 zone de sélection dans ce 1 via JS ci-dessus:

echo '<select id="actions_list" name="layout_actions[]" multiple style="height: 128px; width: 300px;', (isset($context['layout_error']['no_actions']) ? ' border: 1px solid red;' : ''), '">'; 
          foreach($context['current_actions'] as $cur_action) 
           echo ' 
            <option value="', $cur_action, '">', $cur_action, '</option>'; 

     echo ' 
            </select> 

En bref, my $_POST['layout_actions'] = '' (chaîne vide). Qu'est-ce qui se passe ici??? Cela devrait fonctionner, ne devrait-il pas être?

S'il vous plaît aidez-moi ... argg. Je sais que les éléments sont ajoutés, car je peux les voir aller d'une case de sélection à la boîte de sélection multiple quand je clique sur le bouton Ajouter, mais quand je publie le formulaire, layout_actions retourne vide.

+1

Les éléments de la boîte de sélection multiple sont-ils marqués comme étant sélectionnés? – climbage

+0

Opps, non, y a-t-il un moyen de les obtenir sans les sélectionner? Je vois ce que vous voulez dire, semble quand je les sélectionne il l'a là-dedans. Mais j'ai besoin de les attraper tous là, qu'ils aient été sélectionnés ou non. Comment faire ça? – SoLoGHoST

+0

Mettez des copies d'entre eux dans une entrée cachée. – bobince

Répondre

0

J'ai essayé votre code HTML simple et il affiche Tableau de layout_actions [] dans la demande

Ce que je vu que vous utilisez variable contexte $ en guillemet simple ....

donc je pense C'est la raison pour laquelle il ne prend pas les propriétés multiples de la boîte de sélection

echo '<select id="actions_list" name="layout_actions[]" multiple style="height: 128px; width: 300px;', (isset($context['layout_error']['no_actions']) ? ' border: 1px solid red;' : ''), '">'; 
Questions connexes