Affichage automatique de la valeur d'un text_field

Bonjour à tous,

Je travail sur appli. de gestion des RH. J’ai une table qui contient 4
colonnes: id, echelle, echelon et indice.
A chaque couple (echelle, echelon) correspond un indice unique:

id…echelle…echelon…indice
1…11…1…254
2…11…2…352
3…10…1…287
.
.
n

Dans un formulaire j’ai deux listes déroulantes (collection_select))
dont l’une pointe sur “echelle” et l’autre sur “echelon” et un
text_field qui pointe sur
le champ “indice”.

Question: Comment afficher automatiquement la valeur du champ texte
“indice” lors de la sélection des valeurs dans les deux listes
déroulantes.

Exemple: Lorsque je sélectionne dans mes listes déroulantes echelle=11
et echelon=1, la valeur 254 doit être affichée automatiquement dans le
champ de texte “indice”.

Merci pour toute aide.

[email protected]

Déjà c’est du javascript. observe_field peut-être?

Fernando P. wrote:

Déjà c’est du javascript. observe_field peut-être?

J’ai essayé observe_field, mais je ne sais pas comment récupérer la
valeur du champ “indice” de ma table.

le code suivant affiche la valeur 254 dans mon champ:

<%= f.text_field :indice, Grille.find(:all, :conditions => ‘echelle=11
and echelon=1’)[0].indice.to_s %>

Comment écrire un code équivalent dans une fonction js:

<%= observe_field(“personne_echelle”,
:on => “changed”,
:frequency => 0.1,
:function => " code ??? " ) %>

Prototype est embedded dans Rails, ça simplifie le JavaScript et ça
tombe
bien parce que c’est ce dont tu as besoin ici :
http://www.prototypejs.org/

Si tu aimes protoype, tu aimeras encore plus jQuery au bout de quelques
temps :
http://docs.jquery.com/Main_Page

Sinon, pour la méthode c’est assez simple :

  • sélectionner tes champs et leur attribuer une réponse Ã
    l’évènement “change” : $(‘id_de_mon_select’).observe(‘change’,
    function(event) { /* le code à exécuter ici */ });
  • dans la méthode de callback, changer la valeur du champs de texte, par
    exemple : $(‘id_de_mon_champs_de_texte’).value = $F(‘id_de_mon_select’);

Michel B.

2009/6/22 Bardach M. [email protected]

Michel B. a écrit :

Sinon, pour la méthode c’est assez simple :

  • sélectionner tes champs et leur attribuer une réponse Ã
    l’évènement “change” : $(‘id_de_mon_select’).observe(‘change’,
    function(event) { /* le code à exécuter ici */ });
  • dans la méthode de callback, changer la valeur du champs de texte, par
    exemple : $(‘id_de_mon_champs_de_texte’).value = $F(‘id_de_mon_select’);

Avec prototype il y a aussi les timed observer 1 pour faire ce genre
de chose qui sont bien pratiques et qui évitent d’avoir à gérer le type
de champ.


Martin C. || fuse
http://www.noremember.org

Michel B. wrote:

Prototype est embedded dans Rails, ça simplifie le JavaScript et ça
tombe
bien parce que c’est ce dont tu as besoin ici :
http://www.prototypejs.org/

Si tu aimes protoype, tu aimeras encore plus jQuery au bout de quelques
temps :
jQuery API Documentation

Sinon, pour la méthode c’est assez simple :

  • sélectionner tes champs et leur attribuer une réponse Ã
    l’évènement “change” : $(‘id_de_mon_select’).observe(‘change’,
    function(event) { /* le code à exécuter ici */ });
  • dans la méthode de callback, changer la valeur du champs de texte, par
    exemple : $(‘id_de_mon_champs_de_texte’).value = $F(‘id_de_mon_select’);

Michel B.

2009/6/22 Bardach M. [email protected]

La valeur de mon champ de texte doit être récupérer de la table.
Commment faire ça en js?

Parcourir la dom, avec prototype ça se fait comme ça : $$(‘#regle .de
.ciblage .comme .en .css’)
http://www.prototypejs.org/api/utility/dollar-dollar

Pour lire le contenu d’un “Element” : ton_element.content()

Tout simple.

Après

Michel B.

2009/6/22 Bardach M. [email protected]

Bardach M. a écrit :

La valeur de mon champ de texte doit être récupérer de la table.
Commment faire ça en js?

En Ajax ?


Martin C. || fuse
http://www.noremember.org

2009/6/22 Martin C. [email protected]

de chose qui sont bien pratiques et qui évitent d’avoir à gérer le type
de champ.

En quoi un timed observer est-il plus simple qu’un observe(‘change’, …
)
avec callback ? Encore avec un champs de texte ou autre (où il n’y a pas
moyen de le faire de toute façon) je comprend que ça ait une utilité,
mais
sur un select ça me semble un poil overkill perso, d’autant que le
timedobserver réagira forcément moins vite (il ne s’exécute que tous les
tantième de seconde) et va plomber la machine (par exemple si le
tantième de
secondes est petit, et si le nombre d’éléments à surveiller est grand).

Michel B.

Michel B. a écrit :

En quoi un timed observer est-il plus simple qu’un observe(‘change’, …
) avec callback ?

Non ce n’est pas plus simple, juste une autre façon de faire qui pourra
lui servir.


Martin C. || fuse
http://www.noremember.org

Précisions SVP: Quelles fonctions ajax puis-je utiliser pour afficher la
valeur de l’indice qui correspond à un couple (echelle, echelon)?