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. Bardach@bardach.info
on 2009-06-22 12:11
on 2009-06-22 15:11
Fernando Perez 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 ??? " ) %>
on 2009-06-22 15:31
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 <select> 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 Belleville
2009/6/22 Bardach Mostafa <list-incoming@andreas-s.net>
on 2009-06-22 15:36
Michel Belleville a écrit : > Sinon, pour la méthode c'est assez simple : > - sélectionner tes champs <select> 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. [1]: http://prototypejs.org/api/timedObserver#method-form.element.observer -- Martin Catty || fuse http://www.noremember.org
on 2009-06-22 15:48
Michel Belleville 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 : > http://docs.jquery.com/Main_Page > > Sinon, pour la méthode c'est assez simple : > - sélectionner tes champs <select> 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 Belleville > > > 2009/6/22 Bardach Mostafa <list-incoming@andreas-s.net> La valeur de mon champ de texte doit être récupérer de la table. Commment faire ça en js?
on 2009-06-22 15:51
Bardach Mostafa 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 Catty || fuse http://www.noremember.org
on 2009-06-22 15:54
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 Belleville
2009/6/22 Bardach Mostafa <list-incoming@andreas-s.net>
on 2009-06-22 15:59
2009/6/22 Martin Catty <martin@noremember.org> > 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 Belleville
on 2009-06-22 16:06
Michel Belleville 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 Catty || fuse http://www.noremember.org
on 2009-06-22 16:29
Précisions SVP: Quelles fonctions ajax puis-je utiliser pour afficher la valeur de l'indice qui correspond à un couple (echelle, echelon)?
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.