Лучший способ добавить "снять флажок с радиокнопок" - функциональность в Rails? - PullRequest
0 голосов
/ 27 октября 2010

Сценарий: у меня есть выпадающий список с радиокнопками, которые не нужно выбирать для отправки формы, и после того, как я выбрал опцию, оттуда уже невозможно отменить ее выбор.Я хочу, чтобы это было как-то возможно.

Мысли для решений: 1) Реализовать некоторую функцию, которая позволяет отменить выбор радиокнопки, почти как флажок.Это кажется плохой идеей.

2) Добавить опцию «сбросить радиокнопки» в раскрывающемся списке, которая сбрасывает радиокнопки при выборе.

3) Добавить кнопку «Сброс всех радиокнопок».Возможно для всех выпадающих на странице.

4) Создайте опцию 'placeholder' в выпадающем списке, которая ничего не делает.Вопрос здесь заключается в том, что если я уже сделал выбор X и отправил форму, если я позже выберу выбор заполнителя, все данные, которые были сохранены при создании выборки X, должны быть возвращены.

Пока что я думаю, что вариант 2 - лучший, но хочу услышать ваши идеи.Это код, с которым я сейчас работаю:

<% form.inputs do %>
      <% @account.account_preference.editorial_attributes.each do |key, value| %>
        <%= account_pref.input "editorial_#{key}".to_sym, :as => :radio, :collection => (options_for(Editorial, key.to_sym) + option_text_and_value("Reset radiobuttons")), :wrapper_html => { :class => "compact" }, :label => key.titleize  %>
      <% end %>

Где options_for (Редакционное, key.to_sym) собирает параметры, которые на самом деле что-то делают, а option_text_and_value ("Сбросить радиокнопки") должендобавьте еще один параметр, который я затем могу связать с функциональностью, чтобы снять отметки с радиокнопок.Это не совсем работает, как ожидалось, так как option_text_and_value возвращает два параметра вместо одного.Я попытался найти какой-либо другой метод выбора на apidock, но еще не нашел.Это не основной вопрос, но если кто-то знает об этом и комментирует, я был бы очень признателен.

Итак, завершение: Как вы думаете, какой путь лучше всего?

С уважением, Эмиль

Ответы [ 3 ]

2 голосов
/ 28 октября 2010

Радиокнопки предназначены для выбора чего-либо из группы параметров. Каждый раз, когда я вижу группу радиокнопок, ни одна из которых не выбрана, я думаю, что тот, кто ее создал, не понимает радиокнопки. Может быть, вам нужно добавить кнопку «Ничего из вышеперечисленного»?

2 голосов
/ 27 октября 2010

Я не знаю, с какой стати вы захотите поместить переключатели в выпадающий список. Это звучит запутанно для пользователей. Почему бы просто не выбрать опцию выпадающего обычным способом? Это бизнес-требование?

Если вам абсолютно необходимо это сделать, я думаю, что вариант 2 - лучший, который вы представили, хотя я не знаю, должен ли он быть вариантом в раскрывающемся списке. Это может работать лучше как ссылка или кнопка рядом или под списком. Список и ссылка (или кнопка) должны находиться в содержащем элементе div, чтобы легко было найти соответствующий раскрывающийся список, если на странице есть несколько раскрывающихся списков, подобных этому. Оттуда достаточно просто прикрепить к ссылке (или кнопке) некоторый JavaScript, который отменит все переключатели в списке.

Но я все же предполагаю, что наличие переключателей в выпадающем списке - это просто плохой дизайн с точки зрения пользователя, и я понятия не имею, что это даст.

0 голосов
/ 12 февраля 2013

У меня действительно похожая проблема, и определенно иногда требуется отменить выбор элемента формы, созданного из переключателей.

В настоящее время я работаю над многоэтапной формой, в которой есть только несколько обязательных полей (например, вопросник), и пользователь может вернуться к предыдущим страницам формы, что позволяет отменить выбор предыдущих ответов, заполненных переключатели.

Проблема не в том, чтобы отменить выбор радиокнопок, это можно легко сделать, повесив jQuery на элемент и управляя им через его события, но Rails слишком умен в размещении данных формы, оставляя без внимания поля, которые не имеют значения, и поэтому не обновляют значение до нуля в базе данных, оставляя меня с первоначально выбранным значением, когда я возвращаюсь назад в форме.

Так что я думаю о том, чтобы иметь метод модели для полей переключателей, который будет очищать значения, когда ничего не передается для конкретной страницы (той, на которой живут отдельные поля переключателей).

Что касается вашего исходного вопроса: просто создайте событие нажатия jQuery для элемента управления переключателем (по классу HTML), и по щелчку вы проверяете, щелкнуло ли значение параметра, установлено ли его флажок флажок = «проверен», и, если это так, удалите проверенная опция и она должна отменить выбор (теоретически).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...