下拉国家/地区选择电话国家/地区代码

时间:2011-05-17 13:48:42

标签: javascript ruby-on-rails drop-down-menu

Rails noob在这里提出了一个问题。

我正在尝试让用户输入他们的电话号码。表格目前包含国家代码,areacode和phonenumber的单独字段。

<% form_tag phones_path, :method => 'get' do %>
<th><%= text_field_tag :countrycode %></th>
<th><%= text_field_tag :areacode %></th>
<th><%= text_field_tag :search, params[:search] %></th>
<th><%= submit_tag "Search", :name => nil %></th>
<% end %>

我想将国家/地区代码字段转换为国家/地区名称的下拉列表,并在选择时自动显示实际的国家/地区代码。例如,用户选择USA,并显示+1。我将存储国家名称和数字代码。

我想我需要使用collection_select的组合来下拉和javascript来刷新显示。但我有点迷失如何继续前进。请问有什么样的灵魂会给出一些提示吗?

2 个答案:

答案 0 :(得分:2)

首先,您应该在控制器中创建一个类似于:

的哈希
@countries  = { "United States" => "+1", "Switzerland" => "+41" }

然后为国家/地区创建选择列表,并为选择列表添加onchange javascript事件处理程序:

<% form_tag phones_path, :method => 'get' do %>
<th>
  <%= select_tag  :country, 
                  options_for_select(@countries), 
                  :onchange => "document.getElementById('countrycode').value = this.options[selectedIndex].value;" 
  %>
</th>
<th><%= text_field_tag :countrycode %></th>
<th><%= text_field_tag :areacode %></th>
<th><%= text_field_tag :search, params[:search] %></th>
<th><%= submit_tag "Search", :name => nil %></th>
<% end %>

注意:我已经在onchange事件中使用了标准的Javascript,如果你使用jQuery或prototypeJS,这可以写得更短更清洁:)

答案 1 :(得分:0)

你也可以这样做:

<%= f.collection_select(:subject_heading_source_id, SubjectHeadingSource.all, :id, :name, :prompt => "Please select...") %>

这取决于在某个表格中表示选择的内容并使用“form_for”方法来构建表单,因此它可能不完全适用。

编辑:意外提交,抱歉。

我使用jQuery查找元素并更新它:

$("#phones_path_country_code").attr("selected", value_of_selection)

你把这部分放入:onchange =&gt; erb位的html选项中的“...”。

我的jQuery可能已关​​闭,但您可以在api网站上获得更好的想法。 jQuery