Получить выбранный вариант из элемента выбора


93

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

$('#ddlCodes').change(function() {
  $('#txtEntry2').text('#ddlCodes option:selected').text();
});

Что я делаю не так?

Ответы:


187

Вот краткая версия:

$('#ddlCodes').change(function() {
  $('#txtEntry2').text($(this).find(":selected").text());
});

karim79 сделал хороший улов, судя по имени вашего элемента, txtEntry2может быть текстовое поле, если это какой-либо ввод, вам нужно будет использовать .val()вместо него или .text()вот так:

  $('#txtEntry2').val($(this).find(":selected").text());

На вопрос "что случилось?" часть вопроса: .text()не использует селектор, он берет текст, который вы хотите установить, или ничего, чтобы вернуть текст, который уже есть. Итак, вам нужно получить нужный текст, а затем поместить его в .text(string)метод объекта, который вы хотите установить, как я сделал выше.


7
Если txtEntry2это текстовый ввод, val()вместо него нужно будет использовать OP .
karim79 04

@ karim79 - Хороший момент, судя по названию элемента, обновление.
Ник Крейвер

да, изменив .text на .val и получив текст по-другому, все получилось. Спасибо, ребята
Мэтт


8

Вот более короткая версия, которая также должна работать:

 $('#ddlCodes').change(function() {
      $('#txtEntry2').text(this.val());
    });

Uncaught TypeError: объект № <HTMLSelectElement> не имеет метода 'val'
DoodleKana

1
this.valueисправлю это.
Крис Селбекк

4

С меньшим количеством jQuery:

<select name="ddlCodes"
 onchange="$('#txtEntry2').text(this.options[this.selectedIndex].value);">

this.options[this.selectedIndex].value это простой JavaScript.

(Источник: German SelfHTML )


2

Попробуйте следующий код

$('#ddlCodes').change(function() {
  $('#txtEntry2').val(  $('#ddlCodes :selected').text() );
});

2

Чтобы узнать количество выбранных элементов, используйте

$("select option:selected").length

Чтобы получить значение всех выбранных элементов, используйте

    var str = "";
  $("select option:selected").each(function () {
        str += $(this).text() + " ";
      });


1

Первая часть - получить элемент из выпадающего меню, которое может выглядеть так:

<select id="cycles_list">
    <option value="10">10</option>
    <option value="100">100</option>
    <option value="1000">1000</option>
    <option value="10000">10000</option>
</select>

Для захвата через jQuery вы можете сделать что-то вроде этого:

$('#cycles_list').change(function() {
    var mylist = document.getElementById("cycles_list");
    iterations = mylist.options[mylist.selectedIndex].text;
});

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

т.е. <p></p> OR <div></div>

Вы бы использовали:

$ ('p'). html (итерации); ИЛИ $ ('div'). Html (итерации);

Если вы хотите заполнить текстовое поле, например:

<input type="text" name="textform" id="textform"></input>

Вы бы использовали:

$ ('# текстовая форма'). текст = итерации;

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


1

Используя свойство selectedOptions (HTML5), вы можете получить выбранный вариант (ы)

document.getElementbyId("id").selectedOptions; 

С помощью JQuery можно добиться этого

$("#id")[0].selectedOptions; 

или

$("#id").prop("selectedOptions");

Свойство содержит массив HTMLCollection, аналогичный этому выбранному параметру.

[<option value="1">​ABC</option>]

или множественный выбор

[<option value="1">​ABC</option>, <option value="2">​DEF</option> ...]

0

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

    $('#txtEntry2').val($('#ddlCodes option:selected').text());

0

если у вас это уже есть и вы используете jquery, это будет ваш ответ:

$ ($ (это) [0] .selectedOptions [0]). text ()


0

Учитывая этот HTML:

<select>
    <option value="0">One</option>
    <option value="1">Two</option>
</select>

Выберите по описанию для jQuery v1.6 +:

var text1 = 'Two';
$("select option").filter(function() {
    //may want to use $.trim in here
    return $(this).text() == text1; 
}).prop('selected', true);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.