jQuery nhận giá trị tùy chọn đã chọn (không phải văn bản, nhưng thuộc tính 'value')


156

Được rồi, tôi có mã này:

<select name="selector" id="selector">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>

Và tôi muốn nhận được giá trị của tùy chọn đã chọn. Ví dụ: 'Tùy chọn 2' được chọn và giá trị của nó là '2'. '2' là giá trị tôi cần nhận chứ không phải 'Tùy chọn 2'.


Demo hướng dẫn cho Getting: freakyjolly.com/... Demo hướng dẫn cho Thiết freakyjolly.com/... Độc thân và Nhiều selectbox
Mã Spy

Câu trả lời:


270

04/2020: Sửa câu trả lời cũ

Sử dụng : bộ chọn psuedo đã chọn trên các tùy chọn đã chọn và sau đó sử dụng hàm .val để lấy giá trị của tùy chọn.

$('select[name=selector] option').filter(':selected').val()

Lưu ý bên : Sử dụng bộ lọc sẽ tốt hơn sau đó sử dụng :selectedbộ chọn trực tiếp trong truy vấn đầu tiên.

Nếu bên trong trình xử lý thay đổi, bạn có thể sử dụng đơn giản this.valueđể nhận giá trị tùy chọn đã chọn. Xem bản demo để có thêm tùy chọn.

//ways to retrieve selected option and text outside handler
console.log('Selected option value ' + $('select option').filter(':selected').val()); 
console.log('Selected option value ' + $('select option').filter(':selected').text());

$('select').on('change', function () {
  //ways to retrieve selected option and text outside handler
  console.log('Changed option value ' + this.value);
  console.log('Changed option text ' + $(this).find('option').filter(':selected').text());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<select>
  <option value="1" selected>1 - Text</option>
  <option value="2">2 - Text</option>
  <option value="3">3 - Text</option>
  <option value="4">4 - Text</option>
</select>

Câu trả lời cũ:

Chỉnh sửa: Như nhiều người đã chỉ ra, điều này không trả về giá trị tùy chọn đã chọn.

~ ~ Sử dụng .val để lấy giá trị của tùy chọn đã chọn. Xem bên dưới,

$('select[name=selector]').val()~~

5
Làm bài kiểm tra của bạn:$('select[name=selector]').change(function() { alert($(this).val()); });
KingRider

4
Lưu ý rằng nếu tùy chọn đã chọn không có valuethuộc tính được chỉ định, nhãn (tức là <option>label</option>) sẽ được trả về. Có thể không phải luôn luôn là những gì bạn muốn. Tất nhiên, trong hầu hết các ứng dụng, giá trị được chỉ định.
Công nghệ

115

Tôi chỉ muốn chia sẻ kinh nghiệm của tôi

Cho tôi,

$('#selectorId').val()

trả về null.

Tôi đã phải sử dụng

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


1
Đó có phải là trường hợp cụ thể của trình duyệt? Có phải phiên bản mới nhất của chrome không cho phép nó, hoặc là IE không hỗ trợ nó?
Theodor Solbjørg 10/03/2015

1
Đó là trong phiên bản mới nhất của Chrome. Có lẽ cũng trong Firefox, nhưng không chắc chắn.
David Torres

Không chắc tại sao $('#selectorId option:selected').val()tôi không làm việc cho tôi. Thay vào đó tôi đã sử dụng$('select option:selected').val()
Francisco Quintero

1
@Francisco Vấn đề là $('select option:selected').val()sẽ lấy giá trị của bộ chọn đầu tiên trong mã HTML. Trong khi đó với $('#selectorId option:selected').val()bạn có thể có giá trị của bộ chọn mà id bạn đã chỉ định. Kiểm tra lỗi chính tả. Dưới đây là một ví dụ cho thấy những gì tôi vừa nói: codepen.io/anon/pen/Nqgqyz
David Torres


9

Bạn cần thêm một id để chọn. Sau đó:
$('#selectorID').val()


Tôi đã thêm id, chỉ cần quên thêm nó ở đây.
n00b

1
Từ những gì tôi đã đọc bằng cách sử dụng ID làm công cụ chọn là phương pháp nhanh nhất.
Marcus

5

Thử cái này:

$(document).ready(function(){
    var data= $('select').find('option:selected').val();
});

hoặc là

var data= $('select').find('option:selected').text();

4

bạn có thể sử dụng jquerynhư sau

KỊCH BẢN

  $('#IDOfyourdropdown').change(function(){
    alert($(this).val());
  });

FIDDLE ở đây


2

Đối với một lựa chọn như thế này

<select class="btn btn-info pull-right" id="list-name" style="width: auto;">
   <option id="0">CHOOSE AN OPTION</option>
   <option id="127">John Doe</option>
   <option id="129" selected>Jane Doe</option>

... bạn có thể lấy id theo cách này:

$('#list-name option:selected').attr('id');

Hoặc bạn có thể sử dụng giá trị thay thế và lấy nó một cách dễ dàng ...

<select class="btn btn-info pull-right" id="list-name" style="width: auto;">
   <option value="0">CHOOSE AN OPTION</option>
   <option value="127">John Doe</option>
   <option value="129" selected>Jane Doe</option>

như thế này:

$('#list-name').val();

2

Một trong những lựa chọn của tôi không có giá trị : <option>-----</option>. Tôi đã cố gắng sử dụng if (!$(this).val()) { .. }nhưng tôi đã nhận được kết quả lạ. Hóa ra nếu bạn không có valuethuộc tính trên thành <option>phần của mình , nó sẽ trả về văn bản bên trong nó thay vì một chuỗi trống. Nếu bạn không muốn val()trả lại bất cứ điều gì cho tùy chọn của mình, hãy đảm bảo thêm value="".


0

Nhìn vào ví dụ:

    <select class="element select small" id="account_name" name="account_name"> 

        <option value="" selected="selected">Please Select</option>           
        <option value="paypal" >Paypal</option>
        <option value="webmoney" >Webmoney</option>

    </select>

 <script type="text/javascript">

        $(document).ready(function(){ 
             $('#account_name').change(function(){
               alert($(this).val());                                                          
             });
        });
 </script>

0
$('#selectorID').val();

HOẶC LÀ

$('select[name=selector]').val();

HOẶC LÀ

$('.class_nam').val();

@FarhadBagherlo "Tiếp tục gõ" không phải là một bình luận chỉnh sửa hữu ích! Vui lòng tóm tắt các thay đổi của bạn để độc giả của lịch sử chỉnh sửa hiểu những gì bạn đã làm mà không kiểm tra mọi nhân vật đã thay đổi. Cảm ơn!
jpaugh

0

mã này hoạt động rất tốt đối với tôi: điều này trả về giá trị của tùy chọn đã chọn. $ ('# select_id'). find ('tùy chọn: đã chọn'). val ();


0
 $(document ).ready(function() {
    $('select[name=selectorname]').change(function() { 
     alert($(this).val());});
 });

Mặc dù mã này có thể giải quyết vấn đề, tốt nhất là thêm chi tiết và giải thích cách thức hoạt động cho những người có thể không hiểu đoạn mã này.
giấy1111

@ paper1111 đây là chức năng đơn giản. Tôi có thể giải thích nếu điều này là cần thiết. $ ('select [name = here is select box name]) .change () - chức năng của nó có nghĩa là khi chúng ta thay đổi chức năng tùy chọn hộp chọn sẽ hoạt động. $ (this) .val () - nó trả về giá trị tùy chọn đã chọn
Turan Zamanlı

0

Liên kết nguồn

Sử dụng jQuery val () để NHẬN Giá trị được chọn và văn bản () để GET Văn bản tùy chọn.

    <select id="myDropDown" class="form-control">
        <option value="0">Select Value 0</option>
        <option value="8">Option value 8</option>
        <option value="5">Option value 5</option>
        <option value="4">Option value 4</option>
    </select>

Thay đổi sự kiện khi chọn thả xuống

        $("#myDropDown").change(function () {

            // Fetching Value
            console.log($(this).val());

            // Fetching Text
            console.log($(this).find('option:selected').text());

            alert('Value: '+$(this).val()+' | Text: '+$(this).find('option:selected').text());
        });

Nhấn vào nút

        $("button").click(function () {

        // Fetching Value
            console.log($("#myDropDown").val());

    // Fetching Text
            console.log($('#myDropDown option:selected').text());

            alert('Value: '+$("#myDropDown").val()+' | Text: '+$('#myDropDown option: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.