如何同时选择收音机和选择框值,而不是单独选择

时间:2013-12-02 13:31:59

标签: jquery ruby-on-rails coffeescript

我有一个简单的rails应用程序,它有一个带有收音机和选择框的非模型表格。我希望基于无线电和选择的组合来改变文本。

在改变时,我设法从一个或另一个获得文本。但是如果我改变收音机,我从选择框中得到的文字是"未定义"反之亦然。

这就是我所拥有的:

视图:

<%= form_tag "/tshirt/buy", role: "form", class: "tshirt_size_form" do %>
    <div class="form-group">
      <label for="genderRadio">Modelo:</label>
        <div class="radio-inline">
          <%= radio_button_tag(:gender, "male", checked: true) %>
            <%= label_tag(:gender_male, "Masculino") %>
        </div>
        <div class="radio-inline">
            <%= radio_button_tag(:gender, "female") %>
            <%= label_tag(:gender_female, "Feminino") %>
        </div>
  </div>    
  <div class="form-group">
    <%= select_tag :size, options_for_select([ "P", "M", "G", "GG"], "M"), class: "form-control tshirt_size_select" %>
    </div>    
    <div class="form-group">
          <%= button_tag "comprar", type: "submit", class: "btn btn-success" %>
    </div>    
    <div class="tshirt_size">
        <p>teste</p>
    </div>  
<% end %>

CoffeeScript的:

jQuery ->
    $('.tshirt_size_select, input[name=gender]:radio').change ->
        size = $(this).closest('select').val()
        gender = $(this).closest('input[name=gender]:radio').val()
        $('.tshirt_size').text(gender + "_" + size)
PS:是的,我的前端印章非常糟糕。

1 个答案:

答案 0 :(得分:1)

.closest只遍历祖先,这意味着兄弟姐妹被排除在外。你可以这样做:

jQuery ->
    $('.tshirt_size_select, input[name=gender]:radio').change ->
        size = $(this).closest("form").find('select').val()
        gender = $(this).closest("form").find('input[name=gender]:radio:checked').val()
        $('.tshirt_size').text(gender + "_" + size)

首先遍历表单元素,然后搜索其子元素。