2010-01-21 11 views
1

J'utilise l'éditeur de collection Scripaculous 'in place pour présenter à l'utilisateur une liste de clients à affecter dynamiquement à un contact. Je passe un paramètre de valeur comme détaillé dans le documentation alors quand la sélection est générée, il sélectionnera automatiquement le client associé actuel (s'il n'y en a pas un déjà fourni par défaut.)Mettre à jour l'option de valeur autoselect dynamiquement en utilisant Ajax.InPlaceCollectionEditor

Cela fonctionne bien sauf lorsque l'utilisateur clique sur le champ 'éditer moi' une deuxième fois que la valeur d'origine est sélectionnée, pas le client qui a été sélectionné le plus récemment. C'est parce que l'appel initial à InPlaceCollectionEditor est inchangé. Ma question est de savoir s'il existe un moyen de mettre à jour la valeur autoselect sans mettre à jour dynamiquement l'ensemble de l'appel scriptaculous (cela signifierait de sélectionner tous les clients via ajax, ce qui est possible mais pas idéal.)

Voici le code:

<div id="editme">Test 1</div> 
    <script type="text/javascript"> 

    new Ajax.InPlaceCollectionEditor(
    'editme', 
    '/usercustomer/editCustomer/id/811', 
    { collection: [['192981', "Test 1"],['192893', "Test 2"],['192894', "Test 3"] ... ], 
     ajaxOptions: {method: 'get'} 
     , value: 192893 } // specifying the value parameter auto selects object id 192893 
    ); 
</script> 

Est-ce une limitation de InPlaceCollectionEditor ou existe-t-il une autre solution?

Répondre

0

Passez une variable à la place du nombre codé en dur en tant que 'valeur'. Définissez cette variable sur la valeur initiale ou sélectionnée juste avant de passer l'appel.

+0

L'appel Ajax.InPlaceCollectionEditor met à jour le div id « EditMe » pas les paramètres de l'appel ajax.InPlaceCollectionEditor, qui, comme le montre le code ci-dessus, est en dehors de la div. Comme je l'ai mentionné "Ma question est de savoir s'il existe un moyen de mettre à jour la valeur autoselect sans mettre à jour dynamiquement l'appel scriptaculous entier" – markb

+0

Quand voulez-vous mettre à jour la valeur autoselect, et de quoi? Comme je l'ai dit, si vous utilisez une variable (éventuellement globale) au lieu de la valeur codée en dur, vous pouvez la définir quand vous le souhaitez, avant de faire l'appel ajax. Si vous souhaitez uniquement définir l'option sélectionnée, vous devez accéder à l'élément select et définir sa propriété selectedIndex. –