Выполнение действий при выборе элемента

Вопрос: Мне нужно сделать некоторые действия в зависимости от того, какой элемент из моего раскрывающегося списка выбран. Поэтому мне нужно сделать это, если выбран элемент с префиксом Blue, а затем показать одно текстовое поле ниже, и если какой-либо другой элемент выбран, то покажите некоторые другие вещи, как я могу сделать это самым простым способом? Больше

Вопрос:

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

Поэтому мне нужно сделать это, если выбран элемент с префиксом Blue, а затем показать одно текстовое поле ниже, и если какой-либо другой элемент выбран, то покажите некоторые другие вещи, как я могу сделать это самым простым способом?

Больше объяснений: Хорошо… У меня есть раскрывающееся меню, которое содержит список элементов. То, что мне нужно сделать, так это то, что после выбора элемента с префиксом Blue появится поле ввода в раскрывающемся меню. Если они выберут любой другой предмет, произойдет что-то еще.

До сих пор у меня появилось выпадающее меню:

<select id=»select1″ name=»selectz1″> <?php $id = 0; while ($row = mysql_fetch_row($result)) { echo «<option value=$id>$row[0]</option>»; $id++; } ?> </select>

И именно это генерирует HTML:

<form action=»ThisPage.php» method=»POST»> Accounts: <br /> <select id=»select1″ name=»selectz1″> <option value=0>account 2000-01</option><option value=1>account 2000-02</option> <option value=2>blue 2000-03</option><option value=3>blue 2000-04</option> </select> </form> Лучший ответ:

Итак, вопрос, как я понимаю, это: “Как показывать и скрывать поля формы на основе значения a <select>?”

Прежде чем мы начнем, это обман. Я глубоко недоволен качеством ответов там, поэтому я собираюсь летать перед конвенцией и публиковать свои собственные.

Во-первых, все остальные ответы здесь полностью на правильном пути, но в настоящее время они не могут объяснить, почему они делают то, что делают.

Как и другие, я собираюсь использовать jQuery в этом примере. jQuery – это потрясающая библиотека Javascript, которая значительно облегчает множество повторяющихся, многословных задач. jQuery предоставляет функцию с именем $ – yes, только знак доллара, который позволяет вам просматривать и изменять страницу.

Содержание

  1. Шаг 1
  2. Шаг 2
  3. Шаг 3
  4. Шаг 4
  5. Шаг 5

Шаг 1

Позвольте создать минимальный пример, похожий на существующий код.

<form> <select name=»select1″ id=»select1″> <option value=»1″>account 001</option> <option value=»2″>account 002</option> <option value=»3″>blue 001</option> </select> <input type=»text» name=»text1″ id=»text1″> </form>

Важно отметить:

  1. Современный HTML требует, чтобы значения атрибутов (value=»1″) указывались.
  2. Все элементы, которые нам нужно настроить с помощью jQuery, должны быть легко идентифицируемы. Здесь мы используем id.

Шаг 2

Пусть присоединяется прослушиватель событий. События – это события, которые происходят во время взаимодействия со страницей. В нашем случае мы собираемся прослушать <select> для события change.

<script type=»text/javascript»> $(function() { $(‘#select1’).on(‘change’, function(event) { alert(this.value); }); }); </script>

Это много жаргона в небольшом пространстве. Позвольте мне немного пояснить.

  • $() – вызов функции jQuery.
  • $(function(){… }) передает функцию объекту jQuery. Это ярлык, в котором говорится: “jQuery, когда страница загружена, запустите эту функцию”.
  • $(‘#select1’) запрашивает jQuery для поиска id элемента ‘d с помощью select1 “
  • $(‘#select1’).on(‘change’, function…) запрашивает jQuery для просмотра события change и выполнения запрошенной функции.
  • Наконец, внутри самой функции мы собираемся alert диалог alert с текущим значением элемента select.

Вот демо на jsfiddle.

Шаг 3

Теперь мы запускаем Javascript при каждом изменении меню выбора. Позвольте показать и скрыть это текстовое поле!

Во-первых, нам нужно сделать это скрытым. Поскольку мы показываем и скрываем его с помощью Javascript, мы должны сказать, что он скрывается только при работе Javascript. Скрытие вещей от людей, которые не могут запускать Javascript, делает их сварливыми. Итак, мы добавим новую строку в наш обработчик onload:

$(function() { $(‘#text1’).hide(); $(‘#select1’). // … });

Если вы предположили, что новая строка – “спросить jQuery, чтобы скрыть элемент text1”, вы правильно поняли!

Теперь, как мы наблюдаем за “синими” вариантами? Вернитесь к этому jsfiddle и поиграйте с ним. Вы заметили, что value option предупреждается? Они совсем не голубые! Нам нужно фактически перейти к выбранному option а не только к значению. Это немного смешнее.

Позвольте взглянуть на документацию MDN на <select>. Он сообщает нам, что он будет отображаться как элемент HTMLSelectElement. Не большой сюрприз. Он имеет свойство, называемое selectedIndex, которое указывает нам, какой option был выбран, и имеет свойство, называемое options, которое дает нам прямой доступ к самим параметрам. Милая!

Обновите загрузку снова:

<script type=»text/javascript»> $(function() { $(‘#text1’).hide(); $(‘#select1’).on(‘change’, function(event) { var opt = this.options[ this.selectedIndex ]; alert(‘You picked ‘ + $(opt).text()); }); }); </script>

Опять же, демонстрация jsfiddle.

options есть массив. Javascript, подобно PHP, использует квадратные скобки для доступа к элементам массива.

Итак, мы выбираем наш вариант, а затем завершаем его в jQuery, затем вызываем text метод, чтобы получить текстовый узел внутри элемента, в отличие от значения формы.

Отлично, теперь у нас есть строка. Что мы можем с этим сделать?

Шаг 4

Как и PHP, Javascript имеет регулярные выражения, способ сделать сопоставление шаблонов. Эй, у нас есть образец, с которым можно сравниться!

<script type=»text/javascript»> $(function() { $(‘#text1’).hide(); $(‘#select1’).on(‘change’, function(event) { var opt = this.options[ this.selectedIndex ]; var picked_blue = $(opt).text().match(/blue/i); if(picked_blue) { alert(‘You picked a blue option!’); } else { alert(‘You did not pick a blue option.’); } }); }); </script>

Опять же, демонстрация jsfiddle.

Теперь мы используем метод match объекта String для использования регулярного выражения. В частности, регулярное выражение, которое ищет символы blue, без учета регистра (в конце концов это i).

Этот код должен теперь обнаруживать синие вещи. Время, чтобы наконец скрыть и показать это текстовое поле!

Шаг 5

Пусть погрузится прямо в.

$(function() { $(‘#text1’).hide(); $(‘#select1’).on(‘change’, function(event) { var opt = this.options[ this.selectedIndex ]; var picked_blue = $(opt).text().match(/blue/i); if(picked_blue) { $(‘#text1’).show(); } else { $(‘#text1’).hide(); } }); });

Вы видели это? Можете ли вы догадаться, что он делает?

Вот демо-версия jsfiddle.

И вот мы, миссия. Вы можете применить эту же технику ко всем вещам.

Обратите внимание на ссылки, которые я разбросал по всему сайту, особенно на jsfiddle, что является отличной площадкой для Javascript и HTML, а также на сайтах MDN, которые являются отличной ссылкой на Javascript и HTML. О, и в руководстве jQuery.

Ответ №1

Это можно сделать с помощью Javascript.

Введите id в раскрывающийся список. Когда он выбран, переключите divs в соответствии с его значением. Значение может быть получено, var item= document.getElementById(‘id’).value; , тогда,

function toggle() { var item= document.getElementById(‘yourdropdownid’).value; if(item==’yourfirstoption’) { document.getElementById(‘div1id’).style.display=»block»; document.getElementById(‘div2id’).style.display=»none»; } else if(item==’yoursecondoption’) { document.getElementById(‘div2id’).style.display=»block»; document.getElementById(‘div1id’).style.display=»none»; } }

Пример здесь. Это не точный пример. Но я надеюсь, что вы сможете найти свое решение, связавшись с этим сообщением. Удачи.

Ответ №2<script src=»http://code.jquery.com/jquery.min.js» type=»text/javascript»></script> <script type=»text/javascript»> $(document).on(«change», «#color», function(){ value = $(this).val().split(‘-‘)[0]; // extracting the color prefix from selected value if(value == ‘Blue’) // checking if value is Blue { $(‘#other’).hide(); // hiding the div having id «other» $(‘#blue’).show(); //showing div having id»blue» } else // if selected value have prefix other than Blue { $(‘#blue’).hide(); //hide the div having id «blue» $(‘#other’).show(); // show the div having id «other» } }); </script> <style> /* hiding both divs by default, these div will show up on dropdown change event depending upon the selected value */ #blue, #other{display: none;} </style> <select id=»color» name=»color»> <option value=»»>—Select—</option> <option value=»Blue-value»>Blue</option> <option value=»Red-value»>Red</option> <option value=»Black-value»>Black</option> </select> <div id=»blue»> your blue div </div> <div id=»other»> your other div </div>

Оцените статью
Добавить комментарий