javascript - jQuery Obțineți opțiunea selectată din lista derulantă
De obicei folosesc $ ("#id").val() pentru a returna valoarea opțiunii selectate, dar de data aceasta nu funcționează. Eticheta selectată are id-ul aioConceptName
cod HTML
<label for="name">Name</label>
<input type="text" name="name" id="name" />
<label for="aioConceptName">AIO Concept Name</label>
<select id="aioConceptName">
<option>choose io</option>
<option>roma</option>
<option>totti</option>
</select>
Răspuns #1
Pentru opțiunile din meniul derulant probabil că vrei ceva de genul acesta:
Pentru textul selectat
var conceptName = $('#aioConceptName').find(":selected").text();
Pentru valoarea selectată
var conceptName = $('#aioConceptName').find(":selected").val();
Motivul pentru care val() nu funcționează este că apăsarea pe o opțiune nu schimbă valoarea dropdown-ului - doar adaugă proprietatea :selected opțiunii selectate, care este un copil al dropdown-ului.
Răspunsul #2
Setați valorile pentru fiecare dintre opțiuni
<label for="aioConceptName">AIO Concept Name</label>
<select id="aioConceptName">
<option value="0">choose io</option>
<option value="1">roma</option>
<option value="2">totti</option>
</select>
$ ('#aioConceptName').val() nu a funcționat deoarece .val() returnează atributul value. Pentru ca acesta să funcționeze corect, atributele value trebuie setate pe fiecare <option>.
Acum poți să apelezi $ ('#aioConceptName').val() în loc de tot acest :selected voodoo sugerat de alții.
Răspunsul #3
Am dat peste această întrebare și am dezvoltat o versiune mai concisă a răspunsului lui Elliot Bonneville:
var conceptName = $('#aioConceptName :selected').text();
sau generic:
$('#id :pseudoclass')
Acest lucru îți economisește un apel suplimentar jQuery, selectează totul dintr-o singură dată și este mai clar (părerea mea).
Răspunsul #4
Încearcă asta pentru valoare...
$("select#id_of_select_element option").filter(":selected").val();
sau asta pentru text...
$("select#id_of_select_element option").filter(":selected").text();
Răspunsul #5
Dacă sunteți în contextul unui eveniment, în jQuery, puteți obține elementul opțiune selectat folosind :
$ (this).find('option:selected') astfel :
$('dropdown_selector').change(function() {
//Use $option (with the "$") to see that the variable is a jQuery object
var $option = $(this).find('option:selected');
//Added with the EDIT
var value = $option.val();//to get content of "value" attrib
var text = $option.text();//to get <option>Text</option> content
});
Editare
Așa cum a menționat PossessWithin, răspunsul meu răspunde doar la întrebarea: Cum să selectezi „Opțiunea” selectată.
Apoi, pentru a obține valoarea opțiunii, folosește option.val().
Răspuns #6
Te-ai gândit să folosești vechiul și simplul JavaScript?
var box = document.getElementById('aioConceptName');
conceptName = box.options[box.selectedIndex].text;
Vezi de asemenea Obținerea unui text/valori a unei opțiuni cu JavaScript
Răspunsul #7
$('#aioConceptName option:selected').val();
Răspunsul #8
Cu JQuery:
Dacă vrei să obții textul opțiunii selectate, poți folosi
$ (element select).text().var text = $('#aioConceptName option:selected').text();Dacă vrei să obții valoarea opțiunii selectate, poți folosi
$(select element).val().var val = $('#aioConceptName option:selected').val();Asigură-te că setezi atributul
valueîn tagul<option>, astfel:<select id="aioConceptName"> <option value="">choose io</option> <option value="roma(value)">roma(text)</option> <option value="totti(value)">totti(text)</option> </select>
Cu acest exemplu de cod HTML, presupunând că ultima opțiune este selectată:
- var text vă va da
totti(text) - var val vă va da
totti(value)
$(document).on('change','#aioConceptName' ,function(){
var val = $('#aioConceptName option:selected').val();
var text = $('#aioConceptName option:selected').text();
$('.result').text("Select Value = " + val);
$('.result').append("<br>Select Text = " + text);
})<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="aioConceptName">
<option value="io(value)">choose io</option>
<option value="roma(value)">roma(text)</option>
<option value="totti(value)">totti(text)</option>
</select>
<p class="result"></p>Răspunsul #9
Pentru o bună practică, trebuie să folosești val() pentru a obține valoarea opțiunilor selectate, nu text().
<label>Name</label>
<input type="text" name="name" />
<select id="aioConceptName">
<option value="choose">choose io</option>
</select>
Poți folosi
$("#aioConceptName").find(':selected').val();
Sau
$("#aioConceptName :selected").val();
Răspuns #10
Citirea valorii (nu a textului) unui select:
var status = $("#Status").val();
var status = $("#Status")[0].value;
var status = $('#Status option:selected').val();
Cum să dezactivezi un select? în ambele variante, valoarea poate fi schimbată folosind:
A
Utilizatorul nu poate interacționa cu meniul derulant. Și nu știe ce alte opțiuni ar putea exista.
$('#Status').prop('disabled', true);
B
Utilizatorul poate vedea opțiunile din meniul derulant, dar toate sunt dezactivate:
$('#Status option').attr('disabled', true);
În acest caz, $ ("#Status").val() va funcționa doar pentru versiunile de jQuery mai mici de 1.9.0. Toate celelalte variante vor funcționa.
Cum să actualizezi un select dezactivat?
Din codul din spate poți totuși să actualizezi valoarea din selectul tău. Este dezactivat doar pentru utilizatori:
$("#Status").val(2);
În unele cazuri, s-ar putea să fie necesar să declanșați evenimente:
$("#Status").val(2).change();
Răspuns #11
ar trebui să folosești această sintaxă:
var value = $('#Id :selected').val();
Deci încearcă acest cod:
var values = $('#aioConceptName :selected').val();
poți testa în Fiddle: http://jsfiddle.net/PJT6r/9/
vezi despre acest răspuns în această postare
Răspunsul #12
Pentru a găsi selecțiile corecte cu jQuery, ia în considerare că în arborii HTML pot fi disponibile selecții multiple și pot confunda rezultatul așteptat.
(:selected).val() sau (:selected).text() nu vor funcționa corect pe opțiuni multiple selectate. Așa că păstrăm mai întâi un array cu toate selecțiile, așa cum ar putea face .map(), și apoi returnăm argumentul sau textul dorit.
Exemplul următor ilustrează aceste probleme și oferă o abordare mai bună
<select id="form-s" multiple="multiple">
<option selected>city1</option>
<option selected value="c2">city2</option>
<option value="c3">city3</option>
</select>
<select id="aioConceptName">
<option value="s1" selected >choose io</option>
<option value="s2">roma </option>
<option value="s3">totti</option>
</select>
<select id="test">
<option value="s4">paloma</option>
<option value="s5" selected >foo</option>
<option value="s6">bar</option>
</select>
<script>
$('select').change(function() {
var a=$(':selected').text(); // "city1city2choose iofoo"
var b=$(':selected').val(); // "city1" - selects just first query !
//but..
var c=$(':selected').map(function(){ // ["city1","city2","choose io","foo"]
return $(this).text();
});
var d=$(':selected').map(function(){ // ["city1","c2","s1","s5"]
return $(this).val();
});
console.log(a,b,c,d);
});
</script>
vedea diferitul rezultat predispus la erori în varianta a, b comparativ cu c & d care funcționează corect și păstrează toate selecțiile într-un tablou și apoi returnează ceea ce cauți.
Răspunsul #13
Folosind jQuery, adaugă doar un eveniment change și obține valoarea sau textul selectat în cadrul acelui handler.
Dacă aveți nevoie de text selectat, vă rugăm să folosiți acest cod:
$("#aioConceptName").change(function () {
alert($("#aioConceptName :selected").text())
});
Sau dacă aveți nevoie de valoarea selectată, vă rugăm să folosiți acest cod:
$("#aioConceptName").change(function () {
alert($("#aioConceptName :selected").attr('value'))
});
Răspunsul #14
Doar asta ar trebui să funcționeze:
var conceptName = $('#aioConceptName').val();
$(function() {
$('#aioConceptName').on('change', function(event) {
console.log(event.type + " event with:", $(this).val());
$(this).prev('input').val($(this).val());
});
});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>Name</label>
<input type="text" name="name" />
<select id="aioConceptName">
<option>choose io</option>
<option>roma</option>
<option>totti</option>
</select>Răspuns #15
Pentru oricine a descoperit că cel mai bun răspuns nu funcționează.
Încearcă să folosești:
$( "#aioConceptName option:selected" ).attr("value");
Funcționează pentru mine în proiectele recente, așa că merită să te uiți la el.
Răspunsul #16
Folosește funcția jQuery.val() și pentru elementele select:
Metoda .val() este utilizată în principal pentru a obține valorile elementelor de formular, cum ar fi input, select și textarea. În cazul elementelor select, aceasta returnează
nullatunci când nicio opțiune nu este selectată și un array care conține valoarea fiecărei opțiuni selectate atunci când există cel puțin una și este posibil să se selecteze mai multe, deoarece atributulmultipleeste prezent.
$(function() {
$("#aioConceptName").on("change", function() {
$("#debug").text($("#aioConceptName").val());
}).trigger("change");
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<select id="aioConceptName">
<option>choose io</option>
<option>roma</option>
<option>totti</option>
</select>
<div id="debug"></div>Răspuns #17
Direct și destul de ușor:
Dropdown-ul tău
<select id="aioConceptName">
<option>choose io</option>
<option>roma</option>
<option>totti</option>
</select>
Cod Jquery pentru a obține valoarea selectată
$('#aioConceptName').change(function() {
var $option = $(this).find('option:selected');
//Added with the EDIT
var value = $option.val(); //returns the value of the selected option.
var text = $option.text(); //returns the text of the selected option.
});
Răspunsul #18
Pentru a obține valoarea etichetei selectate:
$('#id_Of_Parent_Selected_Tag').find(":selected").val();
Și dacă vrei să obții textul, folosește acest cod:
$('#id_Of_Parent_Selected_Tag').find(":selected").text();
De exemplu:
<div id="i_am_parent_of_select_tag">
<select>
<option value="1">CR7</option>
<option value="2">MESSI</option>
</select>
</div>
<script>
$('#i_am_parent_of_select_tag').find(":selected").val();//OUTPUT:1 OR 2
$('#i_am_parent_of_select_tag').find(":selected").text();//OUTPUT:CR7 OR MESSI
</script>
