Радиокнопка и проверка текстового поля Ruby on Rails - PullRequest
0 голосов
/ 23 сентября 2010

В данный момент у меня есть настройка:

<input id="demographics_questionary_gender_male" name="demographics_questionary[gender]" type="radio" value="Male"> Male
<input id="demographics_questionary_gender_gender" name="demographics_questionary[gender]" type="radio" value="Female"> Female
<input id="demographics_questionary_gender_male" name="demographics_questionary[gender]" type="radio" value="Other"> Other
<input id="other_gender_value" name="other_gender[value]" size="30" type="text">

Это даст три переключателя (Мужской, Женский, Другой).Существует также текстовое поле, если выбран переключатель «Другое».

Мой вопрос касается того, как проверить, заполнено ли текстовое поле, если выбран переключатель «Другое».

В настоящее время, что я делаю, в контроллере, я проверяю, выбрана ли другая радиокнопка, и если это так, я изменю сохраненное значение на значение, установленное в текстовом поле «прочее».Тем не менее, я не знаю, как проверить текстовое поле.Я знаю, как проверить, проверяется ли переключатель, проверяя, установлено ли значение в модели, но не знаю, как убедиться, что пользователь ввел данные в текстовое поле «Прочее».

Вот фрагмент кода из контроллера:

if @demographics_questionary.gender == 'Other'
    @other_gender = params[:other_gender]
    if @other_gender[:value].nil?
        @demographics_questionary.gender  = @other_gender[:value]
    else 
        @demographics_questionary.gender  = 'Not Set'
    end
 end

Как вы можете видеть, в настоящее время я просто установил для него значение «Не установлено», если выбрана радиокнопка «Другое», итекстовое поле «Другое» пусто.Однако этот код выполняется, когда выбрана кнопка для обработки данных.В идеале, я бы хотел, чтобы проверка выполнялась на странице просмотра, где это не позволило бы пользователю двигаться вперед до тех пор, пока текстовое поле не будет заполнено, если выбран переключатель «Другое».Таким образом, к тому времени, когда он попадет даже в метод контроллера, эта проверка не потребуется.

Но я снова открыт для любых других предложенных методов.

Я думаю, что это можетсделать JavaScript или JQuery, но я не уверен, как.

Ах да, поэтому весь этот код в представлении находится в поле формы:

<% form_for(@demographics_questionary) do |f| %>
  <%= f.error_messages :header_message => "Please do not skip any of the questions." %>
  /* Code for radio buttons */
  <%= f.submit 'Next' %>   

 <%end%>

Обратите внимание, что код переключателя находится в form_for.После того, как кнопка отправки запущена, она выполнит метод в контроллере.Если бы вы использовали JavaScript / jQuery, как бы вы добавили функцию к кнопке отправки?

Это текущая страница:

http://otoplusvn.com/TherapistSurvey/demographics_questionaries/new для вопроса 2 по полу.

Есть предложения?Я ценю это, спасибо Дерек

1 Ответ

2 голосов
/ 23 сентября 2010

Вы можете добавить правила зависимости, примерно так:

$('#register_form').validate({rules: {
     'other_gender[value]': {
       required: {
         depends: function(element) {
           return $("input[name=demographics_questionary[gender]]:checked").val() == "Other"
         }
       }
     }
} });

Для этого потребуется текстовое поле, , только если выбран вариант «Другое»

...