<select onchange="test()" id="select_id">
<option value="0">-Select-</option>
<option value="1">Communication</option>
</select>
Preciso obter o valor da opção selecionada em javascript: alguém sabe como obter o valor ou texto selecionado, por favor diga como escrever uma função para ele. Atribuí a função onchange () para selecionar, então o que devo fazer depois disso?
javascript
Siva
fonte
fonte
value
dooption
que foi selecionado, então ...<select onchange="window.alert(this.value);">
...option
s ...</select>
... deve obter apenas isso e nada mais.Respostas:
Use JavaScript ou jQuery para isso.
Usando JavaScript
<script> function val() { d = document.getElementById("select_id").value; alert(d); } </script> <select onchange="val()" id="select_id">
Usando jQuery
$('#select_id').change(function(){ alert($(this).val()); })
fonte
select.text
ou em jQueryselect.text()
.$('#select_id option:selected').text()
.Isso irá retornar o texto da opção selecionada, Selecionar ou Comunicaçãodocument.getElementById("select_id").onchange = (evt) => { console.log(evt.srcElement.value); }
Se você estiver pesquisando sobre isso e não quiser que o ouvinte de evento seja um atributo, use:
document.getElementById('my-select').addEventListener('change', function() { console.log('You selected: ', this.value); });
<select id="my-select"> <option value="1">One</option> <option value="2">Two</option> <option value="3">Three</option> </select>
fonte
function test(a) { var x = (a.value || a.options[a.selectedIndex].value); //crossbrowser solution =) alert(x); }
<select onchange="test(this)" id="select_id"> <option value="0">-Select-</option> <option value="1">Communication</option> <option value="2">Communication</option> <option value="3">Communication</option> </select>
fonte
a.value
? Existe algum navegador que realmente suporte tal? não podemos apenas usara.options[a.selectedIndex].value
?Não há necessidade de uma função onchange. Você pode pegar o valor em uma linha:
document.getElementById("select_id").options[document.getElementById("select_id").selectedIndex].value;
Ou divida-o para melhor legibilidade:
var select_id = document.getElementById("select_id"); select_id.options[select_id.selectedIndex].value;
fonte
Uau, nenhuma solução realmente reutilizável entre as respostas ainda. Quer dizer, um manipulador de eventos padrão deve receber apenas um
event
argumento e não precisa usar ids. Eu usaria:function handleSelectChange(event) { // if you want to support some really old IEs, add // event = event || window.event; var selectElement = event.target; var value = selectElement.value; // to support really old browsers, you may use // selectElement.value || selectElement.options[selectElement.selectedIndex].value; // like el Dude has suggested // do whatever you want with value }
Você pode usar este manipulador com cada - js inline:
<select onchange="handleSelectChange(event)"> <option value="1">one</option> <option value="2">two</option> </select>
jQuery:
jQuery('#select_id').on('change',handleSelectChange);
ou configuração do manipulador JS vanilla:
var selector = document.getElementById("select_id"); selector.onchange = handleSelectChange; // or selector.addEventListener('change', handleSelectChange);
E não tem que reescrever isso para cada
select
elemento que você possui.Snippet de exemplo:
function handleSelectChange(event) { var selectElement = event.target; var value = selectElement.value; alert(value); }
<select onchange="handleSelectChange(event)"> <option value="1">one</option> <option value="2">two</option> </select>
fonte
let dropdown = document.querySelector('select'); if (dropdown) dropdown.addEventListener('change', function(event) { console.log(event.target.value); });
fonte
this
em uma seta, a função obtém seu contexto de seu ambiente lexical, mas a função normal tem seu próprio this. Verifique istoUsar
document.getElementById("select_id").selectedIndex
Ou para obter o valor:
document.getElementById("select_id").value
fonte
HTML:
<select onchange="cityChanged(this.value)"> <option value="CHICAGO">Chicago</option> <option value="NEWYORK">New York</option> </select>
JS:
function cityChanged(city) { alert(city); }
fonte
<script> function test(a) { var x = a.selectedIndex; alert(x); } </script> <select onchange="test(this)" id="select_id"> <option value="0">-Select-</option> <option value="1">Communication</option> <option value="2">Communication</option> <option value="3">Communication</option> </select>
no alerta você verá o valor INT do índice selecionado, trate a seleção como um array e você obterá o valor
fonte
Pergunto-me que toda a gente tem publicado sobre
value
etext
opção para começar a partir<option>
e ninguém sugeriulabel
.Portanto, estou sugerindo
label
também, pois é compatível com todos os navegadoresPara obter
value
(igual a outros sugeridos)function test(a) { var x = a.options[a.selectedIndex].value; alert(x); }
Para obter
option
text
(ou seja, comunicação ou -Selecionar-)function test(a) { var x = a.options[a.selectedIndex].text; alert(x); }
OU (nova sugestão)
function test(a) { var x = a.options[a.selectedIndex].label; alert(x); }
HTML
<select onchange="test(this)" id="select_id"> <option value="0">-Select-</option> <option value="1">Communication</option> <option value="2" label=‘newText’>Communication</option> </select>
Além disso
fonte
Esta é uma pergunta antiga, mas não tenho certeza por que as pessoas não sugeriram usar o objeto de evento para recuperar as informações em vez de pesquisar no DOM novamente.
Basta percorrer o objeto de evento em sua função onChange, veja o exemplo abaixo
function test() { console.log(event.srcElement.value); }
http://jsfiddle.net/Corsico/3yvh9wc6/5/
Pode ser útil para as pessoas que procuram isso hoje, se esse não fosse o comportamento padrão há 7 anos
fonte
function test(){ var sel1 = document.getElementById("select_id"); var strUser1 = sel1.options[sel1.selectedIndex].value; console.log(strUser1); alert(strUser1); // Inorder to get the Test as value i.e "Communication" var sel2 = document.getElementById("select_id"); var strUser2 = sel2.options[sel2.selectedIndex].text; console.log(strUser2); alert(strUser2); }
<select onchange="test()" id="select_id"> <option value="0">-Select-</option> <option value="1">Communication</option> </select>
fonte
$('#select_id').change(function(){ // selected value alert($(this).val()); // selected text alert($(this).find("option:selected").text()); })
<select onchange="test()" id="select_id"> <option value="0">-Select-</option> <option value="1">Communication</option> </select>
fonte
function test(){ var sel1 = document.getElementById("select_id"); var strUser1 = sel1.options[sel1.selectedIndex].value; console.log(strUser1); alert(strUser1); // Inorder to get the Test as value i.e "Communication" var sel2 = document.getElementById("select_id"); var strUser2 = sel2.options[sel2.selectedIndex].text; console.log(strUser2); alert(strUser2); }
<select onchange="test()" id="select_id"> <option value="0">-Select-</option> <option value="1">Communication</option> </select>
var e = document.getElementById("ddlViewBy"); var strUser = e.options[e.selectedIndex].value;
fonte
Tentei explicar com meu próprio exemplo, mas espero que ajude você. Você não precisa de onchange = "test ()" Execute o snippet de código para obter um resultado ao vivo.
document.getElementById("cars").addEventListener("change", displayCar); function displayCar() { var selected_value = document.getElementById("cars").value; alert(selected_value); }
<select id="cars"> <option value="bmw">BMW</option> <option value="mercedes">Mercedes</option> <option value="volkswagen">Volkswagen</option> <option value="audi">Audi</option> </select>
fonte
edited 7 hours ago
Pelo menos você consertou o código que não funcionou bem.