Ruby1.9.2 Rails3.2
以下代码将生成下一个HTML代码。
<%= form_tag :controller => "index", :action => "index" do %>
<%= select_tag(:area_id,
options_from_collection_for_select(@areas, :id, :area_name, @area_id),
:onchange => "this.form.submit()") %>
<% end %>
<form accept-charset="UTF-8" action="/area/2" method="post">
<select id="area_id" name="area_id" onchange="this.form.submit()">
<option value="1">Japan</option>
<option value="2" selected="selected">Thailand</option>
<option value="3">USA</option>
<option value="4">Canada</option>
<option value="5">England</option>
</select>
</form>
当我更改选择框时,会发生onchange事件。 但是表单操作值不会改变“/ area / 2”。 如果我选择/ area / 1,它就不会改变。
我想知道在onchange事件发生时我如何更改操作的值。
答案 0 :(得分:1)
这可以通过将一些javascript代码放在app / assets / javascripts目录中的一个js文件中来完成。在select_tag调用中删除onchange选项后,应该注意它:
$(function() {
$('#area_id').change(function() {
$(this).parent().attr('action', '/area/' + $(this).val());
});
});
只要你的视图或布局通过javascript_include_tag
方法加载应用程序文件,你就应该好了。
虽然没有在更改事件中提交表单,但我建议只添加一个按钮,以防有人误选他们想要的值,他们不必点击后退按钮或者你是什么。