У меня есть простое приложение с рельсами, которое имеет немодельную форму с радио и поле выбора. Я хочу, чтобы текст изменялся на основе комбинации радио и выбора.
При изменении мне удалось получить текст от одного или другого. Но если я меняю радио, текст, который я получаю из поля выбора, является "неопределенным" и наоборот.
Это то, что у меня есть:
Посмотреть:
<%= 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: Да, мои обходные отрубы довольно плохие.
.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)
Который сначала перемещается назад к элементу формы, а затем выполняет поиск его дочерних элементов.