Nhận văn bản đã chọn từ danh sách thả xuống (hộp chọn) bằng jQuery


2302

Làm cách nào tôi có thể lấy văn bản đã chọn (không phải giá trị đã chọn) từ danh sách thả xuống trong jQuery?


12
Chỉ hai xu của tôi: Việc thả xuống "ASP" không có gì đặc biệt; Nó chỉ là HTML cũ tốt. :-)
ankush981

Mọi người có thể tham khảo bài viết này: javascriptstutorial.com/blog/ trên
Dilip Kumar Yadav

để biết cách vanilla javascript, xem stackoverflow.com/a/5947/32453
rogerdpack

Chỉ $ (này) .prop ('được chọn', đúng); thay thế .att thành .prop nó hoạt động cho tất cả các trình duyệt
Shahid Hussain Abbasi

Câu trả lời:


3773
$("#yourdropdownid option:selected").text();

207
Tôi nghĩ điều này nên là $("#yourdropdownid").children("option").filter(":selected").text()vì () trả về một giá trị boolean cho dù đối tượng có khớp với bộ chọn hay không.
MHollis

42
Tôi thứ hai nhận xét về là () trả lại một boolen; cách khác, sử dụng thay đổi nhỏ sau: $ ('# yourdropdownid'). children ("tùy chọn: đã chọn"). text ();
scubbo

25
@ DT3 được kiểm tra is("selected").text()trả về aTypeError: Object false has no method 'text'
ianace

96
$('select').children(':selected')là cách nhanh nhất: jsperf.com/get-selected-option-text
Simon

3
$ ("# IdSelect"). Children ("tùy chọn: đã chọn"). Text ()
JD - DC TECH

266

Thử cái này:

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

Đối với trình đơn thả xuống ASP.NET, bạn có thể sử dụng bộ chọn sau:

$("[id*='MyDropDownId'] :selected")

Phiên bản ASP.NET ở đây là Jquery duy nhất hoạt động với asp.net đối với tôi, do đó tôi đồng ý với điều đó. Cái này: ( '$ ("tùy chọn # yourdropdownid: đã chọn"). Text ();' không hoạt động trong trang asp.net khi sử dụng trang chính.
netfed

5
nó không hoạt động vì các trang chính asp.net ném các ký tự ngẫu nhiên trước bộ chọn. Về mặt kỹ thuật, nó đang tìm kiếm một cái gì đó giống như("#ct0001yourdropdownid)
CSharper


1
@CSharper - Tôi nghĩ rằng việc ASP.NET ném các ký tự ngẫu nhiên là khá sai lệch. Chúng hoàn toàn không ngẫu nhiên, chúng có cấu trúc và tuân theo các quy tắc nghiêm ngặt (dựa trên những thứ như liệu bạn có IDkiểm soát hay không, và nếu không thì dựa vào chỉ số nơi chúng xảy ra ở cấp độ hiện tại của cây, v.v. )
rơi tự do

Xin chào, làm thế nào để bạn làm điều này trong một hàng / ô của Bảng, làm thế nào để bạn biết phần nào của Dropdown từ bảng, đặc biệt là trong ASP MVC 5
biến áp

215

Các câu trả lời được đăng ở đây, ví dụ,

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

không làm việc cho tôi, nhưng điều này đã làm:

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

Nó có thể là một phiên bản cũ hơn của jQuery.


7
Đừng ghét câu trả lời này. Sử dụng từ khóa "tìm" đã giúp tôi rất nhiều. Tôi đã đến từ một bối cảnh hoàn toàn khác.
ROFLwTIME

5
bạn hoàn toàn không cần phần tùy chọn như được ngụ ý với lựa chọn .. chỉ cần sử dụng $ ('# yourdropdownid: đã chọn'). text (); sẽ hoạt động tốt
Dss

jquery-1.10.2.min, cái này làm việc cho tôi, không phải cái khác.
kubilay

Câu trả lời phổ biến hoạt động, nhưng tôi cần nó trên một tài liệu tham khảo đã được chọn, vì vậy đây là câu trả lời tốt nhất cho tôi
Graham


67

Điều này làm việc cho tôi

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

Nếu phần tử được tạo động

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


55

$("#DropDownID").val() sẽ đưa ra giá trị chỉ số được chọn.


37
Không chính xác câu trả lời cho câu hỏi, nhưng rất hữu ích cho tôi. Câu hỏi muốn văn bản được chọn.
Peter

54

Điều này làm việc cho tôi:

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

Phiên bản jQuery : 1.9.1


3
Điều này làm việc cho tôi, bởi vì trong changesự kiện bây giờ tôi có thể sử dụng $(this).find('option:selected').text()để nhận văn bản.
Timo002

$(this).children(':selected').text()cũng sẽ làm việc @ Timo002
Ông Mak

42

Đối với văn bản của mục đã chọn, sử dụng:

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

Đối với giá trị của mục đã chọn, sử dụng:

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

33

Nhiều cách khác nhau

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

đây là những gì tôi đã mong đợi $(this) sau cuộc gọi ajax của tôi
Chaiarama Tupe

Bạn cũng có thể thực hiện $ ("tùy chọn: đã chọn", cái này) .text () mà không gói cái này trong một đối tượng JQuery.
Doug F

28

Dùng cái này

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

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

Sau đó, bạn nhận được giá trị lựa chọn của bạn và văn bản bên trong selectedValueselectedText.


1
Upvote vì đây là câu trả lời duy nhất không sử dụng jQuery.
Justin Lessard

Tôi yêu tình yêu với vanilla js. Cảm ơn rất nhiều vì chuyện này.
Enrique Bermúdez

27
var someName = "Test";

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

Điều đó sẽ giúp bạn có được hướng đi đúng đắn. Mã trên được kiểm tra đầy đủ nếu bạn cần giúp đỡ thêm cho tôi biết.


19

Đối với những người đang sử dụng danh sách SharePoint và không muốn sử dụng id được tạo từ lâu, điều này sẽ hoạt động:

var e = $('select[title="IntenalFieldName"] option:selected').text();

17
 $("#selectID option:selected").text();

Thay vì #selectIDbạn có thể sử dụng bất kỳ bộ chọn jQuery nào, như .selectClasssử dụng lớp.

Như đã đề cập trong tài liệu ở đây .

Bộ chọn: đã chọn hoạt động cho các phần tử <tùy chọn>. Nó không hoạt động cho các hộp kiểm hoặc đầu vào radio; sử dụng :checkedcho họ.

.text () Theo tài liệu ở đây .

Lấy nội dung văn bản kết hợp của từng thành phần trong tập hợp các yếu tố phù hợp, bao gồm cả con cháu của chúng.

Vì vậy, bạn có thể lấy văn bản từ bất kỳ thành phần HTML nào bằng cách sử dụng .text() phương thức.

Tham khảo tài liệu để được giải thích sâu hơn.



13

Để nhận được giá trị lựa chọn sử dụng

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

và để nhận văn bản mục đã chọn, hãy sử dụng dòng này:

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


11

Chọn Văn bản và giá trị được chọn khi thả xuống / chọn sự kiện thay đổi trong jQuery

$("#yourdropdownid").change(function() {
    console.log($("option:selected", this).text()); //text
    console.log($(this).val()); //value
})

10

Đơn giản chỉ cần thử mã sau đây.

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

nó trả về văn bản của tùy chọn đã chọn.


9

Sử dụng:

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

9
var e = document.getElementById("dropDownId");
var div = e.options[e.selectedIndex].text;

Tôi đã thử đăng nhập div var div = e.options[e.selectedIndex].text;và nó chỉ hiển thị mục tùy chọn đầu tiên. Làm thế nào để có được từng mục để hiển thị?
Chris22

@ Chris22 giới thiệu liên kết này stackoverflow.com/questions/3923858/ từ
Kalaivani M

8

Những điều sau đây làm việc cho tôi:

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

1
Lưu ý: Không sử dụng điều này cho đa lựa chọn. Nó chỉ lấy giá trị được chọn đầu tiên.
tối đa


7

Trong trường hợp anh chị em

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

Nhấn vào đây để xem màn hình OutPut


Xin chào, làm thế nào để bạn làm điều này trong một hàng / ô của Bảng , làm thế nào để bạn biết phần nào của Dropdown từ bảng? Tôi đang cố gắng thực hiện một cuộc gọi ajax để tìm nạp và điền các giá trị, tôi có thể thực hiện điều này bên ngoài trong một trang, nhưng không phải trong Bảng Hàng ... bạn có thể thêm một số trợ giúp không
biến


4

Nếu bạn muốn kết quả là một danh sách, sau đó sử dụng:

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

làm giải thích lý do tại sao mà muốn làm việc
jwenting

2

Mã này làm việc cho tôi.

$("#yourdropdownid").children("option").filter(":selected").text();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.