我瀏覽了所有關於此主題的問題和答案,但仍無法使我的方案正常工作。 我想在選擇下拉菜單選項時觸發點擊按鈕操作;看起來很簡單,應該在AJAX中很常見。在Ruby on Rails表單中選擇onChange
這裏是我的代碼的相關摘錄:
<%= form_for(@test, :html => {:id => "form_id", :name => "MyForm", :remote => "true"}) do |form| %>
<%= form.label "Menu1" %>
<%= form.select (:Menu1, [["Option1","value1"],["Option2","value2"]], :html_options=>{:onChange=>"javascript: this.form.apply_button_name.click();"}) %>
<!-- more select menus and text fields here -->
<div class="actions">
<%= form.submit "Apply", :name => "apply_button_name", :remote => "true" %>
</div>
<% end %>
我使用。「:遠程=>‘真’既爲形式和按鈕,因爲這讓AJAX工作的唯一辦法,我也嘗試過有和沒有明確的「html_options」和「javascript:」,在我瀏覽了一些SO的答案後,提示但沒有幫助,我也試過onSelect和onClick而不是onChange,但仍然沒有運氣
生成HTML是以下內容:
Menu1
<select id="test_Menu1" name="test[Menu1]"><option value="value1">Option1</option>
<option value="value2" selected="selected">Option2</option></select>
正如您所見,HTML代碼中沒有onChange事件處理程序;爲什麼?任何人都看到我做錯了什麼?
感謝您的任何幫助。
感謝rabusmar,這有助於使用平變化,但是當我選擇選項1,控制器獲取值2,反之亦然。我添加了第三個選項,看起來控制器沒有選擇我剛剛選擇的選項,而是之前的選項!它爲什麼這樣做?我通過向控制器添加了「@ test.Menu1 =」+ @ test.Menu1.to_s +「\ n」來檢查這一點。 – rh4games 2011-12-31 22:28:30
這是因爲表單發送時未設置值。你可以在你的處理程序中使用'setTimeout',以便發送正確的值。 – rabusmar 2012-01-01 03:28:52
我可以問,如何引用此文件外的JavaScript,而不是內聯JavaScript? – Orz 2015-07-24 03:45:31