установить опцию «выбранный» атрибут из динамически создаваемой опции - PullRequest
59 голосов
/ 04 января 2011

У меня есть динамически созданная опция выбора с использованием функции JavaScript. выбранный объект

<select name="country" id="country">
</select>

при выполнении функции js объектом "country" является

<select name="country" id="country">
    <option value="AF">Afghanistan</option>
    <option value="AL">Albania</option>
    ...
    <option value="ID">Indonesia</option>
    ...
    <option value="ZW">Zimbabwe</option>
</select>

и отображение «Индонезия» в качестве опции по умолчанию. примечание: в этой опции нет атрибута selected="selected".

тогда мне нужно установить атрибут selected="selected" на "Индонезия", и я использую этот

var country = document.getElementById("country");
country.options[country.options.selectedIndex].setAttribute("selected", "selected");

используя firebug, я вижу, что опция "Индонезия" такая:

<option value="ID" selected="selected">Indonesia</option>

но в IE он не работает (проверено в IE 8).

и затем я попытался использовать jQuery

$( function() {
    $("#country option:selected").attr("selected", "selected");
});

ошибка как в FFX, так и в IE.

Мне нужно, чтобы опция "Indonesia" имела атрибут selected="selected", поэтому, когда я нажимаю кнопку сброса, она снова выбирает "Indonesia".

Изменение функции js для динамического создания опций "страны" не является опцией. решение должно работать как в FFX, так и в IE.

спасибо

Ответы [ 15 ]

1 голос
/ 08 февраля 2014

Это должно работать.

$("#country [value='ID']").attr("selected","selected");

Если у вас есть вызовы функций, связанные с элементом, просто следуйте за ним что-то вроде

$("#country").change();
1 голос
/ 03 мая 2013

Вы можете искать все значения параметров, пока не найдете правильное.

var defaultVal = "Country";
$("#select").find("option").each(function () {

    if ($(this).val() == defaultVal) {

        $(this).prop("selected", "selected");
    }
});
0 голосов
/ 25 июня 2018

Идеи на этой странице были полезны, но мой сценарий был другим. Итак, в модальном загрузочном / экспресс-узле js / aws beanstalk это работает для меня:

var modal = $(this);
modal.find(".modal-body select#cJourney").val(vcJourney).attr("selected","selected");

Где мои select ID = "cJourney" и раскрывающееся значение хранились в переменной: vcJourney

0 голосов
/ 27 мая 2016

Я пытался сделать что-то подобное, используя функцию $(...).val(), но функция не существовала.Оказывается, вы можете вручную установить значение так же, как вы делаете это для <input>:

// Set value to Indonesia ("ID"):
$('#country').value = 'ID'

... и оно автоматически обновляется при выборе.Работает на Firefox как минимум;Вы можете попробовать это в других.

0 голосов
/ 03 апреля 2013

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

elem.checked=true;

Где elem - ссылка на выбранную опцию.

Так что для вышеуказанного вопроса:

var country = document.getElementById("country");
country.options[country.options.selectedIndex].checked=true;

Это работает для меня, даже если параметры не обернуты в.

Если все теги имеют одно и то же имя, они должны быть сняты при проверке нового.

...