2009-07-15 4 views
0

Ich möchte ein Formular für eine Reservierung für geliehene Elemente erstellen. Eine Reservierung besteht aus der Abholzeit, der Rückgabezeit und den Gegenständen, die der Reserver ausleihen möchte und deren Höhe. Ich möchte zum Beispiel drei Teller, drei Messer und drei Gabeln für den Rest der Woche reservieren.Rails: wie Wert von einem anderen Feld erhalten, wenn eine Remote-Funktion onchange in Textfeld

Im Formular möchte ich eine AJAX-Validierung durchführen, die überprüft, ob genügend Elemente verfügbar sind. Neben jedem Artikel habe ich ein Textfeld, mit dem der Reserver den Artikelbetrag eingibt. Nach der Eingabe möchte ich einen Onchange-Aufruf durchführen, der prüft, ob die Anzahl der Elemente für die angegebenen Daten verfügbar ist. Daher muss ich die Remote-Funktion übergeben, die in den onchange-folgenden Parametern aufgerufen wird: Artikel-ID, Artikelmenge (Wert des aktuellen Textfelds) und Abholzeit und Rückgabezeit, die beide in datetime_select-Feldern oben angegeben sind. Dies ist mein 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) }" %> 

Offensichtlich ist dies, da nicht arbeiten @ reservation.return_time und @ reservation.pick_up_time sind noch nicht festgelegt, da die Form noch nicht gesendet wird. Meine Frage ist: Wie bekomme ich diese Werte? Ich glaube, dass es über einen Javascript-Aufruf erfolgen sollte, aber ich habe es nicht geschafft, einen Javascript-Aufruf in die "mit" -Variable einzufügen oder zumindest nicht zum Laufen zu bringen. Hat jemand eine Idee, was ich tun soll?

+0

angezeigt werden, wenn der Server der Validierung tut, warum nicht nur Übergeben Sie das Formular normal an den Server und ermitteln Sie den Fehler dort. Da der Server sowieso beteiligt ist ... – ErsatzRyan

Antwort

1

Verwendung Prototyp Selektoren $ (# reservations_pick_up_time) .Value

das: mit dem Attribut ist nur ein Ort für Sie JS-Code zu schreiben, dass es inline

+0

Ich habe es versucht, aber es gibt einen seltsamen Fehler: wenn ich versuche, um den Wert des einen der pick_up_time Felder (es ist ein Rails datetime_select Feld, das aus fünf Dropdowns besteht) in Javascript zu fragen , antwortet er: "TypeError: $ (" conversation_pick_up_time_3i "). value.toS ist keine Funktion". Ich kann Werte von jedem anderen Feld bekommen, und ich kann auch zum Beispiel den Typ dieses spezifischen Feldes bekommen, aber aus irgendeinem Grund gibt es den Wert nicht. Irgendeine Idee dazu? – Kusti

+1

Sie brauchen nicht die .toS sollte nur $ ("conversation_pick_up_time_2i"). Value + "/" + $ ("conversation_pick_up_time_3i"). Value + "/" + $ ("conversation_pick_up_time_1i"). Wert gibt mir MM/DD/YYYY dann können Sie einfach weitermachen, um die Zeit zu tun – ErsatzRyan

+0

Ich habe nicht versucht, den .toS-Aufruf zu tun, es hat immer gesagt, dass ... aber es stellte sich heraus, dass der Fehler verursacht wurde durch einige mystische Variablen, die Dinge benennen, weitere Informationen in meiner anderen Frage zum Thema: http://stackoverflow.com/questions/1136688/how-to-get-the-value-of-a-datetimeselect-field- mit javascript-in-ruby-on-rails Wie auch immer, danke für die Hilfe, Ihre Antwort gab mir den Mut zu glauben, dass ich das Richtige tat :) – Kusti

Verwandte Themen