2009-08-12 17 views
0

J'implémente une boîte automatique complète en utilisant la méthode Ajax.autocompleter de la structure scriptaculous.js.Comment passer un tableau comme un champ caché?

Il s'agit de la zone de saisie automatique et de la division où les entrées suggérées automatiquement sont remplies.

<?php echo $form->create('Share', array('url' => '/forms/share')); ?> 
    <label for="shareWith">Share Form with</label> 
    <input type="text" id="autocomplete" name="autocomplete_parameter"/> 
    <div id="autocomplete_choices" class="autocomplete"></div> 
    <input type="hidden" id="sharedUserId" name="sharedUserId"/> 
<?php echo $form->end('Share');?> 

Ceci est la fonction JQuery pour obtenir la liste proposée automatiquement et pour obtenir l'identifiant de l'entrée sélectionnée qui est stockée dans le champ caché de la forme. Supposons que si je sélectionne plusieurs entrées, comment envoyer ces valeurs?

new Ajax.Autocompleter("autocomplete", "autocomplete_choices", 
         "http://localhost/FormBuilder/forms/autoComplete", 
          { 
          tokens: ',', 
          afterUpdateElement : getSelectedId 
          } 
         ); 

function getSelectedId(text, li) { 
     $("#sharedUserId").val(li.id); 
} 

Supposons que si je sélectionne plusieurs entrées, comment envoyer ces valeurs? Puis-je avoir un tableau comme un champ caché, de sorte que je peux avoir un tableau des éléments sélectionnés et enregistrer ce tableau comme un champ caché?

+0

Sans rapport avec votre question, mais: vous utilisez à la fois scriptaculous + prototype et jQuery sur la même page? Pourquoi utiliser deux JS Frameworks sur le même site? N'en a-t-on pas assez? –

+0

plus tôt avait codé en utilisant jquery .. et pour implémenter la fonctionnalité auto complète, avait besoin du framework scriptaculous – Angeline

Répondre

0

créer simplement un nouveau champ d'entrée cachée pour chaque ID sélectionné, et assurez-vous que pour chacun vous avez name="sharedUserId[]". Cela ne suit pas la convention de nommage de l'élément de formulaire CakePHP, mais il s'assurera que la valeur POSTed de sharedUserId est un tableau.

0

sérialiser avec json et l'analyser dans le serveur arrière. PHP 5.2 peut analyser json nativement.