jQuery để truy xuất và thiết lập giá trị tùy chọn đã chọn của phần tử chọn html


126

Tôi đang cố gắng truy xuất và thiết lập giá trị đã chọn của một phần tử được chọn (danh sách thả xuống) với jQuery.

cho retrievel tôi đã cố gắng $("#myId").find(':selected').val(), cũng như $("#myId").val()nhưng cả hai trả lại không xác định.

Bất kỳ cái nhìn sâu sắc về vấn đề này sẽ được nhiều đánh giá cao.


nếu bạn sử dụng asp .net, Id của họ có thể không giống nhau khi được kết xuất!
Bài hát Rigobert

Câu trả lời:


154

Cách bạn có nó là chính xác tại thời điểm này. Hoặc id của lựa chọn không phải là những gì bạn nói hoặc bạn có một số vấn đề trong dom.

Kiểm tra Id của phần tử và cũng kiểm tra đánh dấu xác thực của bạn tại đây tại W3c.

Nếu không có một dom dom hợp lệ thì không thể hoạt động chính xác với các bộ chọn.

Nếu id là chính xác và dom của bạn xác nhận thì áp dụng như sau:

Để đọc Chọn giá trị tùy chọn

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

Để đặt Chọn giá trị tùy chọn

$('#selectId').val('newValue');

Để đọc văn bản đã chọn

$('#selectId>option:selected').text();

@ Html.DropDownList ("CoinTypes", (Chọn danh sách) ViewBag.RequiredLevel, mới {@group = "form-control", @ style = "height: 21px; margin-top: 5px;"}) nhưng $ ('# CoinTypes ') .val (@ ViewBag.CoinType); không được chọn
Nithin Paul 27/2/2015

@NithinPaul không phải là một bình luận thực sự, hãy hỏi một câu hỏi hiển thị html để ai đó thực sự có thể thử và tìm ra những gì sai. Không chắc chắn làm thế nào bạn có thể mong đợi bất cứ ai làm việc đó từ một số mã webforms / mvc!
redsapes

248

để nhận / đặt thuộc tính Index được chọn thực tế của phần tử chọn sử dụng:

$("#select-id").prop("selectedIndex");

$("#select-id").prop("selectedIndex",1);

19
Điều quan trọng cần lưu ý là tính năng prop () đã được triển khai trong phiên bản 1.6 nên các phiên bản trước không có chức năng này.
RobB

18
Tôi thích câu trả lời này vì nó thực sự trả lời câu hỏi truy cập chỉ mục, không chỉ giá trị.
Pablo Diaz

4
vâng Tôi nghĩ đó là câu hỏi ban đầu.
Jack Holt

Bạn cũng có thể sử dụng attr với cùng một cú pháp và không sao.
Yitzhak

7
@ M.YitzhakSamuel .attr().prop()không đồng nghĩa. Nó sẽ hoạt động trong một số trường hợp nhất định trong đó một thuộc tính cũng là một thuộc tính, ví dụ như .attr('id')bằng .prop('id'). Trong trường hợp này, .prop('selectedIndex')bằng .get(0).selectedIndex.
WynandB

7

$('#myId').val() nên làm điều đó, thất bại mà tôi sẽ thử:

$('#myId option:selected').val()

4

Khi cài đặt JQM, đừng quên cập nhật UI:

$('#selectId').val('newValue').selectmenu('refresh', true);

Cảm ơn vì cái nugget này - đã tự hỏi tại sao giá trị mới không hiển thị trên màn hình sau khi thay đổi chỉ số được chọn bằng $ ("# slot-sự lựa chọn"). Prop ("chọn Index", n).
Samik R

3

$("#myId").val()nên hoạt động nếu myidlà id phần tử chọn!

Điều này sẽ đặt mục đã chọn: $("#myId").val('VALUE');


1

Giả sử bạn đã tạo danh sách Thả xuống bằng thẻ CHỌN như sau,

<select id="Country">

Bây giờ nếu bạn muốn xem giá trị được chọn từ thả xuống bằng JQuery là gì, chỉ cần đặt dòng sau để lấy giá trị đó ..

var result= $("#Country option:selected").text();

nó sẽ hoạt động tốt


0

Tôi biết điều này đã cũ nhưng tôi chỉ có một thời gian với Dao cạo râu, không thể làm cho nó hoạt động cho dù tôi có cố gắng thế nào. Giữ trở lại là "không xác định" bất kể tôi đã sử dụng "văn bản" hay "html" cho thuộc tính. Cuối cùng tôi đã thêm thuộc tính "data-value" vào tùy chọn và nó chỉ đọc tốt.

 <option value="1" data-value="MyText">MyText</option>

 var DisplayText = $(this).find("option:selected").attr("data-value");

0

$ ("Tùy chọn #myId: đã chọn") .text (); sẽ cung cấp cho bạn văn bản mà bạn đã chọn trong phần tử thả xuống. một trong hai cách bạn có thể thay đổi nó thành .val (); để có được giá trị của nó. kiểm tra mã hóa dưới đây

<select id="myId">
    <option value="1">Mr</option>
    <option value="2">Mrs</option>
    <option value="3">Ms</option>`
    <option value="4">Dr</option>
    <option value="5">Prof</option>
</select>

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.