2010-03-29 2 views
0

Когда у меня есть набор или флажков или переключателей, мне часто нужно иметь Другой. Этот флажок или переключатель очень часто сопровождается текстовым полем, где пользователь должен заполнить то, что это Другое.Чистый и доступный Другой вариант (флажок и текстовое поле)

Как вы обычно регулируете этот режим? Какую разметку вы используете? Что вам нужно в вашей проверке? Вы используете скрипт java для чего-нибудь? Например:

  • Как вы делаете эту форму доступной? Используете ли вы и как используете тег метки, например.
  • Вы подключаете флажок и текстовое поле каким-либо образом с помощью javascript? Например, вы активируете текстовое поле, когда флажок установлен? Вы проверяете или снимаете флажок автоматически, если текстовое поле заполнено или очищено?
  • Вы не разрешаете валидации с сообщениями об ошибках, если флажок установлен, но текстовое поле не заполнено, или если текстовое поле заполнено, но флажок не установлен? Или вы просто считаете, что это не заполнено и не проверено?

Очень знаете, как наилучшим образом справиться с этим вопросом, так что любые советы и примеры наиболее Добро пожаловать в»,)

ответ

0

Как правило, когда у меня есть динамические формы, я вставить вход динамически. То есть, в case jQuery, я буду использовать .append('<input...') или какую-либо другую аналогичную функцию для фактического вставки элементов и id (или его класса в зависимости), так что может быть легко .remove() -ed, если пользователь решит, что хочет использовать другой вариант вместо этого проверка выполняется либо через onClick на кнопке ввода. Если я чувствую себя злющим, я поеду маршрут AJAX и вообще пропущу <form>.

Я бы определенно допустил ошибку проверки. Они хотят «Другого», и вы хотите знать, что такое «Другое». Если вам все равно, что такое Other, тогда не беспокойтесь о поле ввода.

Редактировать: может выглядеть примерно так.

$('input[type="radio"]').click(function() { 

    if($(this).next().attr('name') != 'other' && $(this).attr('name') == 'other_input') { 
     $(this).after('<textarea name="other"></textarea>'); 
    } else { 
     $('textarea[name="other"]').remove(); 
    } 
} 

The click будет реагировать на любое радио быть щелкнул, и if будет убедиться, что это только «другой» радио-кнопки, которая будет реагировать на щелчок, и что он будет реагировать только, если нет уже текстовое поле после него (так что вы не получаете множественных сообщений).

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

Надеюсь, что вы начнете.

+0

У вас есть пример другого поля ввода «подключено» к другому флажку или переключателю с помощью jQuery? – Svish

+0

Трудно ли заставить его искать «другое» в значении вместо имени? Поскольку в случае флажков и радиоокна, когда они находятся в одной группе, имена одинаковы. – Svish

+0

Абсолютно. На практике я, вероятно, закончил бы это так. Как бы то ни было, я летел слепой и просто набрал код, который мог бы работать. Это выглядело бы скорее как '&& $ (this) .val() == 'other')'. На данный момент «другой» переключатель - это просто способ сообщить вашей обработке POST, что есть текстовое поле, на которое он должен смотреть, поскольку «другой» не имеет другого внутреннего или реального значения. – dclowd9901

0

я обычно прилагаю мои кнопки радио в метке, как это:

<label><input type=radio value=xyz name=stjames>Saint James</label> 

таким образом пользователь может нажать на текст, чтобы вызвать кнопку.

Когда вы решаете, как себя вести, я обычно говорю себе: «Как вы думаете, что пользователь ожидал, когда они это сделали ...», и это часто дает мне ответ. Итак, после щелчка или фокуса текстового поля включите радио, которое идет с ним. Это не будет работать, если вы отключили текстовое поле!

() US () UK  (*) Other [________________] 

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

Обычно я стараюсь сделать невозможным или раздражать пользователя, чтобы сделать что-то «неправильное». EG отключает кнопку OK, если что-то противоречиво. Или выберите другое радио, когда пользователь вводит текст. Если в текстовом поле есть текст, но переключатели установлены на что-то другое, я обычно просто игнорирую текст. Но если это серьезная/опасная ситуация, вы хотите убедиться, что пользователь решил их; если вы удаляете текст, когда пользователь выбирает другое радио, которое может мочить их, но может быть целесообразным, если они должны быть осторожны.

Смежные вопросы