2009-07-15 10 views
0

Je souhaite créer un formulaire pour effectuer une réservation pour des articles empruntés. Une réservation comprend l'heure de ramassage, l'heure de retour et les articles que le détenteur souhaite emprunter et leurs montants. Par exemple, je pourrais vouloir réserver trois assiettes, trois couteaux et trois fourchettes pour le reste de la semaine.Rails: comment obtenir la valeur d'un autre champ lors de l'exécution d'une fonction onchange remote dans le champ de texte

Dans le formulaire, je veux faire une validation AJAX qui vérifie s'il y a suffisamment d'éléments disponibles. À côté de chaque élément, j'ai une zone de texte avec laquelle le reserver saisit le montant de l'article. Après l'entrée, je veux faire un appel onchange qui vérifie si le nombre d'éléments est disponible pour les dates données. Ainsi, j'ai besoin de passer la fonction distante appelée dans l'onchange paramètres suivants: identifiant de l'article, montant de l'article (valeur du champ de texte courant) et le temps de ramassage et de retour qui sont tous deux donnés dans les champs datetime_select ci-dessus. Ceci est mon code:

<% with = "'amount='+value+'&item=#{item.id.to_s}&pick_up_time=#{@reservation.pick_up_time.to_s}&return_time=#{@reservation.return_time.to_s}'" %> 
<%= text_field_tag "reservation[#{prefix}reserved_items][#{item.id}]", get_amount_value(item, @reservation), :size => 3, :onchange => "#{remote_function(:url => { :controller => :items, :action => :availability }, :with => with, :update => availability_url) }" %> 

De toute évidence, cela ne fonctionne pas depuis @ reservation.return_time et @ reservation.pick_up_time ne sont pas encore mis parce que la forme n'a pas encore été envoyé. Ma question est: comment puis-je obtenir ces valeurs? Je crois que cela devrait être fait via un appel javascript, mais je n'ai pas réussi à insérer un appel javascript dans la variable "avec" ou du moins ne l'ai pas fait fonctionner. Est-ce que quelqu'un a une idée de ce que je devrais faire?

+0

si le serveur est en train de faire la validation pourquoi pas seulement passez le formulaire au serveur normalement et déterminez l'erreur là. Puisque le serveur est impliqué de toute façon ... – ErsatzRyan

Répondre

1

utiliser des sélecteurs prototypes $ (# reservations_pick_up_time) .value

l': avec l'attribut est juste un endroit pour vous d'écrire du code JS qu'il affichera en ligne

+0

Je l'ai essayé, mais il y a une erreur bizarre: quand j'essaie de demander la valeur de l'un des champs pick_up_time (c'est un champ rails datetime_select qui se compose de cinq listes déroulantes) en javascript , il répond: "TypeError: $ (" conversation_pick_up_time_3i "). value.toS n'est pas une fonction". Je peux obtenir des valeurs de n'importe quel autre champ et je peux aussi obtenir par exemple le type de ce champ spécifique, mais pour une raison quelconque, il ne donne pas la valeur. Une idée à ce sujet? – Kusti

+1

vous n'avez pas besoin de .toS devrait simplement pouvoir faire $ ("conversation_pick_up_time_2i"). Value + "/" + $ ("conversation_pick_up_time_3i"). Value + "/" + $ ("conversation_pick_up_time_1i"). me donne MM/JJ/AAAA alors vous pouvez simplement continuer à faire le temps – ErsatzRyan

+0

Je n'essayais pas de faire l'appel .toS, il a juste continué à dire que ... mais il s'est avéré que l'erreur a été causée par quelque variable mystique nommant les choses, plus d'infos dans mon autre question liée au sujet: http://stackoverflow.com/questions/1136688/how-to-get-the-value-of-a-datetimeselect-field- avec-javascript-in-ruby-on-rails En tout cas, merci pour votre aide, votre réponse m'a donné le courage de croire que je faisais la bonne chose :) – Kusti

Questions connexes