- How to add «selected» in option attribute using Javascript or jQuery?
- 6 Answers 6
- Свойства и методы формы
- Навигация: формы и элементы
- Обратная ссылка: element.form
- Элементы формы
- input и textarea
- select и option
- new Option
- Ссылки
- Итого
- Как сделать option в select :selected с помощью js?
- How do I programatically select an HTML option using JavaScript?
How to add «selected» in option attribute using Javascript or jQuery?
Below is code for select option and generate using php from database and i try to add selected=»selected» to value=»4″ using jQuery or any javascript:
6 Answers 6
The selected attribute is a boolean attribute, its presence sets the value of the related DOM property to true . If the attribute is absent, the value of the selected property is false .
If an option has the selected attribute, then when the page is first loaded, or the form the control is in is reset, that option will be the selected option.
If the option’s selected property is set to true , then that option will be selected. However, if the form is reset, the default selected option will be selected (i.e. the one with the selected attribute, or the first option, or none).
To set the selected attribute (i.e. make the option the default selected option):
var select = document.getElementById('countryselect'); var option; for (var i=0; i >
Note that this may not make the option the currently selected option, it will just add the selected attribute. To make sure it’s selected (if that is what is required), the also set the selected property to true (see below).
Note that the second argument to setAttribute is supposed to be a string that is used to set the attribute’s value. However, the selected attribute doesn’t have a «setable» value, so the second argument is ignored (e.g. even false will still set the attribute and make the option the default selected option). That causes some confusion. 🙂
To set the selected property (i.e. just make the option the current selected option):
var select = document.getElementById('countryselect'); var option; for (var i=0; i >
Свойства и методы формы
Формы и элементы управления, такие как , имеют множество специальных свойств и событий.
Работать с формами станет намного удобнее, когда мы их изучим.
Навигация: формы и элементы
Формы в документе входят в специальную коллекцию document.forms .
Это так называемая «именованная» коллекция: мы можем использовать для получения формы как её имя, так и порядковый номер в документе.
document.forms.my - форма с именем "my" (name="my") document.forms[0] - первая форма в документе
Когда мы уже получили форму, любой элемент доступен в именованной коллекции form.elements .
Может быть несколько элементов с одним и тем же именем, это часто бывает с кнопками-переключателями radio .
В этом случае form.elements[name] является коллекцией, например:
Эти навигационные свойства не зависят от структуры тегов внутри формы. Все элементы управления формы, как бы глубоко они не находились в форме, доступны в коллекции form.elements .
Форма может содержать один или несколько элементов внутри себя. Они также поддерживают свойство elements , в котором находятся элементы управления внутри них.
Есть более короткая запись: мы можем получить доступ к элементу через form[index/name] .
Другими словами, вместо form.elements.login мы можем написать form.login .
Это также работает, но есть небольшая проблема: если мы получаем элемент, а затем меняем его свойство name , то он всё ещё будет доступен под старым именем (также, как и под новым).
В этом легче разобраться на примере:
Обычно это не вызывает проблем, так как мы редко меняем имена у элементов формы.
Обратная ссылка: element.form
Для любого элемента форма доступна через element.form . Так что форма ссылается на все элементы, а эти элементы ссылаются на форму.
Элементы формы
Рассмотрим элементы управления, используемые в формах.
input и textarea
К их значению можно получить доступ через свойство input.value (строка) или input.checked (булево значение) для чекбоксов.
input.value = "Новое значение"; textarea.value = "Новый текст"; input.checked = true; // для чекбоксов и переключателей
Обратим внимание: хоть элемент и хранит своё значение как вложенный HTML, нам не следует использовать textarea.innerHTML для доступа к нему.
Там хранится только тот HTML, который был изначально на странице, а не текущее значение.
select и option
Элемент имеет 3 важных свойства:
- select.options – коллекция из подэлементов ,
- select.value – значение выбранного в данный момент ,
- select.selectedIndex – номер выбранного .
Они дают три разных способа установить значение в :
- Найти соответствующий элемент и установить в option.selected значение true .
- Установить в select.value значение нужного .
- Установить в select.selectedIndex номер нужного .
Первый способ наиболее понятный, но (2) и (3) являются более удобными при работе.
Вот эти способы на примере:
В отличие от большинства других элементов управления, позволяет нам выбрать несколько вариантов одновременно, если у него стоит атрибут multiple . Эту возможность используют редко, но в этом случае для работы со значениями необходимо использовать первый способ, то есть ставить или удалять свойство selected у подэлементов .
Их коллекцию можно получить как select.options , например:
new Option
Элемент редко используется сам по себе, но и здесь есть кое-что интересное.
В спецификации есть красивый короткий синтаксис для создания элемента :
option = new Option(text, value, defaultSelected, selected);
- text – текст внутри ,
- value – значение,
- defaultSelected – если true , то ставится HTML-атрибут selected ,
- selected – если true , то элемент будет выбранным.
Тут может быть небольшая путаница с defaultSelected и selected . Всё просто: defaultSelected задаёт HTML-атрибут, его можно получить как option.getAttribute(‘selected’) , а selected – выбрано значение или нет, именно его важно поставить правильно. Впрочем, обычно ставят оба этих значения в true или не ставят вовсе (т.е. false ).
let option = new Option("Текст", "value"); // создаст
Тот же элемент, но выбранный:
let option = new Option("Текст", "value", true, true);
option.selected Выбрана ли опция. option.index Номер опции среди других в списке . option.value Значение опции. option.text Содержимое опции (то, что видит посетитель).
Ссылки
Итого
Свойства для навигации по формам:
document.forms Форма доступна через document.forms[name/index] . form.elements Элементы формы доступны через form.elements[name/index] , или можно просто использовать form[name/index] . Свойство elements также работает для . element.form Элементы хранят ссылку на свою форму в свойстве form .
Значения элементов формы доступны через input.value , textarea.value , select.value и т.д. либо input.checked для чекбоксов и переключателей.
Для элемента мы также можем получить индекс выбранного пункта через select.selectedIndex , либо используя коллекцию пунктов select.options .
Это были основы для начала работы с формами. Далее в учебнике мы встретим ещё много примеров.
В следующей главе мы рассмотрим такие события, как focus и blur , которые могут происходить на любом элементе, но чаще всего обрабатываются в формах.
Как сделать option в select :selected с помощью js?
var x = «Терпила»;
Как сделать option :selected в зависимости от переменной x?
leni_m, ну серьёзно, ты хочешь выставить _значение_ инпута не используя его аттрибут value? Оксюморон.
Илья Агафонов, он есть, но он отличается от того, что внутри тега и не хочется 200+ опций переписывать вручную. А получаю я в переменную x именно не value, а то, что внутри.
$("#select option").filter(function() < return $(this).text() === text; >).first().attr("value")
Илья Агафонов, да у меня раньше input обычный был, теперь селект понадобилось сделать, в обработчике ковыряться не хочу, поэтому просто из селекта передаю в инпут type=»hidden», а чтобы при неправильно заполненной форме, сохранялся селект, беру значение из инпута, и оно как раз такое, какое внутри тегов)
value для каждого из option . Иначе, какое значение вы будете передавать при submit формы? Сделать это проще простого:
const select = document.querySelector('#select').getElementsByTagName('option'); for (let i = 0; i
Если, всё-таки, каким-то неведомым образом нужно обойтись без значения value в option , то условие в цикле нужно переписать на вот это:
for (let i = 0; i < select.length; i++) < if (select[i].textContent === 'Терпила') select[i].selected = true; // Или вот на это, если там присутствует html, например: // if (select[i].innerHTML === 'Терпила
') select[i].selected = true; >
да у меня значение селекта идет в инпут type=»hidden»
просто понадобилось сделать селект, а обработчик уже готов, и не хочется там тоже ковыряться, раньше инпут был обычным а теперь селект сделать пришлось, а в нем названия стран, где есть value, но он например у России «RU», и не хочется для всех стран вручную переписывать. Нельзя ли вот что написано в option, то и передать?
How do I programatically select an HTML option using JavaScript?
how does this work with multiple values? For example: document.getElementById(‘personlist’).value=id1,id2 will not work, how to manage that?
@utdev here is a solution for multiple selecting stackoverflow.com/a/1296068/1251563 tip: you need to use a loop
Also you can get value through select options without setting the class like var >. I used in different answer, thanks anyway!
Tools as pure JavaScript code for handling Selectbox:
Graphical Understanding:
Updated — 25-June-2019 | Fiddler DEMO
JavaScript Code:
/** * Empty Select Box * @param eid Element ID * @param value text * @param text text * @author Neeraj.Singh */ function emptySelectBoxById(eid, value, text) < document.getElementById(eid).innerHTML = ""; > /** * Reset Select Box * @param eid Element ID */ function resetSelectBoxById(eid) < document.getElementById(eid).options[0].selected = 'selected'; >/** * Set Select Box Selection By Index * @param eid Element ID * @param eindx Element Index */ function setSelectBoxByIndex(eid, eindx) < document.getElementById(eid).getElementsByTagName('option')[eindx].selected = 'selected'; //or document.getElementById(eid).options[eindx].selected = 'selected'; >/** * Set Select Box Selection By Value * @param eid Element ID * @param eval Element Index */ function setSelectBoxByValue(eid, eval) < document.getElementById(eid).value = eval; >/** * Set Select Box Selection By Text * @param eid Element ID * @param eval Element Index */ function setSelectBoxByText(eid, etxt) < var eid = document.getElementById(eid); for (var i = 0; i < eid.options.length; ++i) < if (eid.options[i].text === etxt) eid.options[i].selected = true; >> /** * Get Select Box Text By ID * @param eid Element ID * @return string */ function getSelectBoxText(eid) < return document.getElementById(eid).options[document.getElementById(eid).selectedIndex].text; >/** * Get Select Box Value By ID * @param eid Element ID * @return string */ function getSelectBoxValue(id)