Pobierz zaznaczony tekst z listy rozwijanej (zaznacz pole) za pomocą jQuery

2302

Jak mogę uzyskać zaznaczony tekst (nie wybraną wartość) z rozwijanej listy w jQuery?

Haddar
źródło
12
Tylko moje dwa centy: lista rozwijana „ASP” nie jest niczym specjalnym; to po prostu stary, dobry HTML. :-)
ankush981
Można odnieść się do tego artykułu: javascriptstutorial.com/blog/…
Dilip Kumar Yadav
sposób javascript waniliowy, patrz stackoverflow.com/a/5947/32453
rogerdpack
Tylko $ (this) .prop ('selected', true); zamienił .att na .prop działał dla wszystkich przeglądarek
Shahid Hussain Abbasi

Odpowiedzi:

3773
$("#yourdropdownid option:selected").text();
Rahul
źródło
207
Myślę, że tak powinno być, $("#yourdropdownid").children("option").filter(":selected").text()ponieważ is () zwraca wartość logiczną tego, czy obiekt pasuje do selektora, czy nie.
MHollis
42
Po drugie komentarz na temat: () zwraca boolen; alternatywnie użyj następującej małej zmiany: $ ('# yourdropdownid'). children ("option: selected"). text ();
scubbo
25
@ Test DT3 is("selected").text()zwraca aTypeError: Object false has no method 'text'
ianace
96
$('select').children(':selected')jest najszybszym sposobem: jsperf.com/get-selected-option-text
Simon
3
$ („# IdSelect”). Dzieci („opcja: wybrana”). Text ()
JD - DC TECH
266

Spróbuj tego:

$("#myselect :selected").text();

Do rozwijanego menu ASP.NET można użyć następującego selektora:

$("[id*='MyDropDownId'] :selected")
kgiannakakis
źródło
Wersja ASP.NET tutaj jest jedyną Jquery, która działa dla mnie z asp.net, dlatego zgadzam się na to. Ten: ( '$ ("# (opcja # twodropdownid opcja: wybrana"). Text ();' nie działał na stronie asp.net przy użyciu strony wzorcowej.
netfed
5
nie działa, ponieważ strony wzorcowe asp.net rzucają losowe znaki przed selektorem. Technicznie szuka czegoś takiego("#ct0001yourdropdownid)
CSharper
1
@CSharper - Myślę, że powiedzenie ASP.NET rzuca losowe znaki jest raczej mylące. W ogóle nie są losowe, są strukturalne i przestrzegają surowych zasad (w oparciu o takie rzeczy, jak nałożenie IDkontroli, a jeśli nie, to na podstawie indeksu miejsca, w którym występują na bieżącym poziomie drzewa itp. )
freefaller
Cześć, jak to robisz w wierszu / komórce tabeli, skąd wiesz, który z rozwijanego menu, szczególnie w ASP MVC 5
transformator
215

Odpowiedzi zamieszczone tutaj, na przykład,

$('#yourdropdownid option:selected').text();

nie działało dla mnie, ale to:

$('#yourdropdownid').find('option:selected').text();

Jest to prawdopodobnie starsza wersja jQuery.

JYX
źródło
7
Nie nienawidzę tej odpowiedzi. Użycie słowa kluczowego „znajdź” pomogło mi. Pochodziłem z zupełnie innego kontekstu.
ROFLwTIME,
5
w ogóle nie potrzebujesz części opcji, jak sugeruje to z zaznaczeniem .. po prostu używając $ ('# yourdropdownid: selected'). text (); będzie działać dobrze
Dss
jquery-1.10.2.min, ten działał dla mnie, a nie dla innych.
kubilay
Popularna odpowiedź działa, ale potrzebowałem jej w już uzyskanym odwołaniu do wybranego, więc jest to dla mnie najlepsza odpowiedź
Graham,
67

To działa dla mnie

$("#dropdownid").change(function() {
    alert($(this).find("option:selected").text());
});

Jeśli element tworzony jest dynamicznie

$(document).on("change", "#dropdownid", function() {
    alert($(this).find("option:selected").text());
});
Prabhagaran
źródło
64
$("option:selected", $("#TipoRecorde")).text()
Rafael
źródło
55

$("#DropDownID").val() da wybraną wartość indeksu.

Neeraj
źródło
37
Nie do końca odpowiedź na pytanie, ale była dla mnie przydatna. Pytanie chce wybrany tekst.
Peter
54

To działa dla mnie:

$('#yourdropdownid').find('option:selected').text();

Wersja jQuery : 1.9.1

Binita Bharati
źródło
3
To działało dla mnie, ponieważ na changerazie mogę teraz użyć, $(this).find('option:selected').text()aby uzyskać tekst.
Timo002,
$(this).children(':selected').text()też by działał. @ Timo002
Mak Mak
42

Do tekstu wybranego elementu użyj:

$('select[name="thegivenname"] option:selected').text();

Jako wartość wybranego elementu użyj:

$('select[name="thegivenname"] option:selected').val();
Kamrul
źródło
33

Różne drogi

1. $("#myselect option:selected").text();

2. $("#myselect :selected").text();

3. $("#myselect").children(":selected").text();

4. $("#myselect").find(":selected").text();
MaxEcho
źródło
31
$("#dropdownID").change(function(){
  alert($('option:selected', $(this)).text());
});
124
źródło
tego właśnie oczekiwałem $(this) po mojej rozmowie z
ajaxem
Możesz także wykonać $ („Option: selected”, this) .text () bez zawijania tego obiektu JQuery.
Doug F
28

Użyj tego

const select = document.getElementById("yourSelectId");

const selectedIndex = select.selectedIndex;
const selectedValue = select.value;
const selectedText = select.options[selectedIndex].text;   

Następnie otrzymasz wybraną wartość i tekst w środku selectedValuei selectedText.

Mohammed Shaheen MK
źródło
1
Pozytywnie oceniany, ponieważ jest to jedyna odpowiedź, która nie korzysta z jQuery.
Justin Lessard
Jestem zakochany w waniliowej js. Wielkie dzięki za to.
Enrique Bermúdez
27
var someName = "Test";

$("#<%= ddltest.ClientID %>").each(function () {
    $('option', this).each(function () {
        if ($(this).text().toLowerCase() == someName) {
            $(this).attr('selected', 'selected')
        };
    });
});

Pomoże Ci to we właściwym kierunku. Powyższy kod jest w pełni przetestowany, jeśli potrzebujesz dalszej pomocy, daj mi znać.

Zarni
źródło
19

Dla tych, którzy używają list SharePoint i nie chcą używać długo generowanego identyfikatora, zadziała to:

var e = $('select[title="IntenalFieldName"] option:selected').text();
FAA
źródło
17
 $("#selectID option:selected").text();

Zamiast tego #selectIDmożesz użyć dowolnego selektora jQuery, takiego jak .selectClassużycie class.

Jak wspomniano w dokumentacji tutaj .

Selektor: selected działa dla elementów <option>. Nie działa dla pól wyboru ani wejść radiowych; użyj :checkeddla nich.

.text () Zgodnie z dokumentacją tutaj .

Uzyskaj połączoną zawartość tekstową każdego elementu w zestawie dopasowanych elementów, w tym ich potomków.

Możesz więc pobrać tekst z dowolnego elementu HTML przy użyciu tej .text()metody.

Bardziej szczegółowe wyjaśnienia znajdują się w dokumentacji.

Nikhil Agrawal
źródło
15
$("select[id=yourDropdownid] option:selected").text()

To działa dobrze

Thangamani Palanisamy
źródło
13

Aby uzyskać wybraną wartość, użyj

$('#dropDownId').val();

i aby uzyskać tekst wybranego elementu, użyj tego wiersza:

$("#dropDownId option:selected").text();
Mojtaba
źródło
12
$('#id').find('option:selected').text();
Nikul
źródło
11

Wybierz Tekst i wybraną wartość w menu rozwijanym / wybierz zdarzenie zmiany w jQuery

$("#yourdropdownid").change(function() {
    console.log($("option:selected", this).text()); //text
    console.log($(this).val()); //value
})
Sandeep Shekhawat
źródło
10

Po prostu wypróbuj następujący kod.

var text= $('#yourslectbox').find(":selected").text();

zwraca tekst wybranej opcji.

Muddasir23
źródło
9

Posługiwać się:

('#yourdropdownid').find(':selected').text();
Kishore
źródło
9
var e = document.getElementById("dropDownId");
var div = e.options[e.selectedIndex].text;
Kalaivani M.
źródło
Próbowałem zalogować się do div var div = e.options[e.selectedIndex].text;i wyświetla tylko pierwszy element opcji. Jak sprawić, by każdy element był wyświetlany?
Chris22,
@ Chris22 Poleć ten link stackoverflow.com/questions/3923858/...
Kalaivani M
8

działało dla mnie:

$.trim($('#dropdownId option:selected').html())
Mohammad Dayyan
źródło
1
Uwaga: Nie używaj tego do wielokrotnego wyboru. Pobiera tylko pierwszą wybraną wartość.
maks.
7

Ta praca dla mnie:

$("#city :selected").text();

Używam jQuery 1.10.2

Rhaymand Tatlonghari
źródło
7

W przypadku rodzeństwa

<a class="uibutton confirm addClient" href="javascript:void(0);">ADD Client</a>
<input type="text" placeholder="Enter client name" style="margin: 5px;float: right" class="clientsearch large" />
<select class="mychzn-select clientList">
  <option value="">Select Client name....</option>
  <option value="1">abc</option>
</select>


 /*jQuery*/
 $(this).siblings('select').children(':selected').text()
winorośl
źródło
7

$(function () {
  alert('.val() = ' + $('#selectnumber').val() + '  AND  html() = ' + $('#selectnumber option:selected').html() + '  AND .text() = ' + $('#selectnumber option:selected').text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
    <title></title>

  </head>
  <body>
    <form id="form1" runat="server">
      <div>
        <select id="selectnumber">
          <option value="1">one</option>
          <option value="2">two</option>
          <option value="3">three</option>
          <option value="4">four</option>
        </select>

      </div>
    </form>
  </body>
</html>

Kliknij, aby zobaczyć ekran OutPut

Bhanu Pratap
źródło
Cześć, jak to robisz w wierszu / komórce tabeli , skąd wiesz, które menu rozwijane z tabeli? Próbuję wykonać wywołanie ajax w celu pobrania i zapełnienia wartości, mogę to zrobić na zewnątrz na stronie, ale nie w wierszu tabeli ... czy możesz mi pomóc, proszę
transformator
4

Jeśli chcesz wynik jako listę, użyj:

x=[];
$("#list_id").children(':selected').each(function(){x.push($(this).text());})
max
źródło
2
$("#dropdown").find(":selected").text();


$("#dropdown :selected").text();

$("#dropdown option:selected").text();

$("#dropdown").children(":selected").text();
shyamm
źródło
wyjaśnij, dlaczego to zadziałałoby
zapisano
2

Ten kod działał dla mnie.

$("#yourdropdownid").children("option").filter(":selected").text();
Naveenbos
źródło