Ich habe alle SO-Fragen und Antworten zu diesem Thema durchsucht, aber ich kann mein Szenario immer noch nicht funktionieren lassen. Ich möchte eine Klickschaltfläche auslösen, wenn eine Dropdown-Menüoption ausgewählt ist. scheint einfach und sollte mit AJAX sehr häufig sein.
Hier sind die relevanten Auszüge aus meinem Code:
%Vor%Ich habe ": remote = & gt;" true "sowohl für das Formular als auch für den Button verwendet, weil das der einzige Weg ist, um AJAX zum Laufen zu bringen. Ich habe es auch mit und ohne explizite" html_options "und" javascript: "versucht, nachdem ich geblättert habe einige SO Antworten, die das nahelegten, aber das half nicht. Ich habe auch onSelect und onClick anstatt onChange versucht, aber immer noch kein Glück.
Das generierte HTML ist das Folgende:
%Vor%Wie Sie sehen, gibt es im HTML-Code keinen onChange-Event-Handler. WARUM? Jeder sieht, was mache ich falsch?
Danke für jede Hilfe.
Wenn Sie die Dokumentation untersuchen für:
auswählenSie werden sehen, dass der ausgewählte Formularhelfer das folgende Format annimmt:
select (Objekt, Methode, Auswahlmöglichkeiten, Optionen = {}, html_options = {})
Wenn Sie für den Optionshash nichts übergeben (in Ihrem Fall ist dies ein leerer Hash), wird in dem Formular angenommen, dass Ihr html_options-Hash Ihr Options-Hash ist und verwirrt wird.
Eine Möglichkeit, dies zu überprüfen, ist, etwas wie {: onchange = & gt; "alert ('Hello');"} und entweder sehen, ob das Ereignis erfolgreich ausgelöst wird, oder alternativ auf Ihrer aktuellen Webseite, klicken Sie mit der rechten Maustaste auf das Element select und prüfen Sie es. Wenn keine Option onchange im html vorhanden ist, bedeutet dies, dass Ihr rails-Formular helper in der Tat die html_options mit den anderen Optionen verwechselt. Also, was du haben solltest:
%Vor%Stellen Sie sicher, dass die leere HASH für die Optionen vor den HTML-Optionen enthalten und Sie sollten fein sein. Ich denke nicht, dass Sie die html_options und javascript Sachen haben müssen, die Sie haben.
Wenn OnChange nicht funktioniert, versuchen Sie schließlich, onchange ohne Großbuchstaben C zu verwenden.