Javascript jQuery скрывает элементы формы на основе выбранного элемента

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

Я пытаюсь создать форму, в которой, когда кто-то выбирает «Другое» в качестве своего заголовка, появляется окно для ввода заголовка. Первая часть моего скрипта работает для того, чтобы сделать div скрытым для начала, но я не могу заставить работать вторую часть, в которой при выборе «Другое» появляется текстовое поле.

Любая помощь будет оценена.

Вот мой HTML:

             <div>
                <label for="title" class="label">Title</label>
                <select name="title" id="title">
                <option></option>
                <option value="mr">Mr.</option>
                <option value="mrs">Mrs.</option>
                <option value="miss">Miss.</option>
                <option value="ms">Ms.</option>
                <option value="dr">Dr.</option>
                <option value="lady">Lady.</option>
                <option value="rev">Rev.</option>
                <option value="sir">Sir.</option>
                <option value="other">Other</option>
                </select>
                <input name="other_title" style="margin-left:10px;" type="text" id="other_title" size="10">
            </div>
  

Вот мой Javascript / jQuery:

 <script>
    jQuery(function( $ ) {
        $('#other_title').hide('fast');
        $(function() {
            if ($('#title option:selected').text() == 'other') {
                $('#other_title').show('fast');
            }
        }); // end function
    });
</script>
  

Комментарии:

1. Вам не хватает обработчика событий.

2. Это для того, чтобы сообщить функции о фактическом запуске? Под этим я подразумеваю, настроил ли я его, но не сказал, что должно его отключить?

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

Ответ №1:

Поможет ли это?

 $('#title').on('change', function() {
    if ($(this).val() == 'other') $('#other_title').show('fast');
    else $('#other_title').hide('fast'); // This too?
});
  

Редактировать: исправлена синтаксическая ошибка. : p

Комментарии:

1. Да, это работает, спасибо. Единственная ошибка заключается в том, что после фигурной скобки требуется «)». Еще раз спасибо

Ответ №2:

Попробуйте использовать событие изменения и заменить

 if ($('#title option:selected').text() == 'other')
  

с

 if ($('#title>option:selected').text() == 'other')
  

Вы можете обратиться к plunkr для справки:
https://plnkr.co/edit/R2w25NEwUbiw00r2lEs3