我有一个简单的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:是的,我的前端印章非常糟糕。
答案 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)
首先遍历表单元素,然后搜索其子元素。