Отримати вибраний параметр із елемента select


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

@ karim79 - Хороший момент, оновлення елемента, можливо, оновлення.
Нік Крейвер

так, змінивши .text на .val та отримавши текст по-різному, все панувало. Спасибі, хлопці
Метт

Ви щойно врятували мене від того, щоб офіційно звести з розуму!
nathanchere

15

Спробуйте це:

$('#ddlCodes').change(function() {
  var option = this.options[this.selectedIndex];
  $('#txtEntry2').text($(option).text());
});

8

Ось коротша версія, яка також повинна працювати:

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

Uncaught TypeError: У об’єкта # <HTMLSelectElement> немає методу 'val'
DoodleKana

1
this.valueвиправив би це.
Kris Selbekk,

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. Це може бути поділка p або спеціальний елемент.

тобто <p></p> OR <div></div>

Ви б використали:

$ ('p'). html (ітерації); АБО $ ('div'). Html (ітерації);

Якщо ви хочете заповнити текстове поле, наприклад:

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

Ви б використали:

$ ('# текстова форма'). text = ітерації;

Звичайно, ви можете зробити все вищезазначене за менші кроки, я просто вірю, що це допомагає людям вчитися, коли ви все це розкладаєте на прості для розуміння кроки ... Сподіваюся, це допомагає!


1

Використовуючи властивість selectedOptions (HTML5), ви можете отримати вибрані параметри

document.getElementbyId("id").selectedOptions; 

За допомогою JQuery можна досягти цього

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

або

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

Властивість містить масив similitar HTMLCollection для цього вибраного параметра

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

або кілька варіантів

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

0

Вищезаписане дуже добре працювало б, але, схоже, ви пропустили jQuery typecast для випадаючого тексту. Крім цього було б доцільно використовувати .val()для встановлення тексту для елемента типу вхідного тексту. З цими змінами код буде виглядати наступним чином:

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

0

якщо у вас це вже є і використовуєте jquery, це буде ваша відповідь:

$ ($ (this) [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.