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?


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();

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")

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.


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());
});


55

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


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


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();

33

Różne drogi

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

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

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

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

31
$("#dropdownID").change(function(){
  alert($('option:selected', $(this)).text());
});

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.


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ć.


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();

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.



13

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

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

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

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


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
})

10

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

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

zwraca tekst wybranej opcji.


9

Posługiwać się:

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


8

działało dla mnie:

$.trim($('#dropdownId option:selected').html())

1
Uwaga: Nie używaj tego do wielokrotnego wyboru. Pobiera tylko pierwszą wybraną wartość.
maks.


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()

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


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());})

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


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

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

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

wyjaśnij, dlaczego to zadziałałoby
zapisano

2

Ten kod działał dla mnie.

$("#yourdropdownid").children("option").filter(":selected").text();
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.