jQuery รับค่าตัวเลือกที่เลือก (ไม่ใช่ข้อความ แต่เป็นค่า 'คุณสมบัติ')


156

โอเคฉันมีรหัสนี้:

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

และฉันต้องการรับค่าของตัวเลือกที่เลือก ตัวอย่าง: เลือก 'ตัวเลือก 2' และค่าของมันคือ '2' '2' คือค่าที่ฉันต้องได้รับและไม่ใช่ 'ตัวเลือก 2'


บทช่วยสอนการสาธิตสำหรับการใช้งาน: freakyjolly.com/… สาธิตการสอนสำหรับการตั้งค่าfreakyjolly.com/…ตัวเลือก เดียวและหลายตัว
รหัส Spy

คำตอบ:


271

04/2020: คำตอบเก่าที่ถูกต้อง

ใช้: ตัวเลือก psuedo ที่เลือกไว้บนตัวเลือกที่เลือกไว้จากนั้นใช้ฟังก์ชัน. valเพื่อรับค่าของตัวเลือก

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

หมายเหตุด้านข้าง : การใช้ตัวกรองจะดีกว่าจากนั้นใช้:selectedตัวเลือกในแบบสอบถามแรกโดยตรง

หากภายในตัวจัดการการเปลี่ยนแปลงคุณสามารถใช้เพียงthis.valueเพื่อรับค่าตัวเลือกที่เลือก ดูตัวอย่างสำหรับตัวเลือกเพิ่มเติม

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

คำตอบเก่า:

แก้ไข:หลายคนชี้ให้เห็นสิ่งนี้จะไม่ส่งกลับค่าตัวเลือกที่เลือก

~~ ใช้ . valเพื่อรับค่าของตัวเลือกที่เลือก ดูด้านล่าง

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

5
ทำแบบทดสอบของคุณ:$('select[name=selector]').change(function() { alert($(this).val()); });
KingRider

4
โปรดทราบว่าหากตัวเลือกที่เลือกไม่มีการvalueระบุแอตทริบิวต์ฉลาก (เช่น<option>label</option>) จะถูกส่งคืน อาจไม่ใช่สิ่งที่คุณต้องการเสมอไป แน่นอนในการใช้งานส่วนใหญ่มีการระบุค่า
Czechnology

115

ฉันแค่อยากจะแบ่งปันประสบการณ์ของฉัน

สำหรับฉัน,

$('#selectorId').val()

คืนค่า null

ฉันต้องใช้

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


1
เบราว์เซอร์นั้นเป็นกรณีเฉพาะหรือไม่? Chrome รุ่นใหม่ล่าสุดไม่อนุญาตหรือเป็น IE ที่ไม่รองรับหรือไม่
Theodor Solbjørg

1
มันเป็น Chrome เวอร์ชันล่าสุด อาจเป็นไปได้ใน Firefox แต่ไม่แน่ใจ
David Torres

ไม่แน่ใจว่าทำไม$('#selectorId option:selected').val()ไม่ทำงานให้ฉัน ฉันใช้แทน$('select option:selected').val()
Francisco Quintero

1
@ ฟรานซิสโกปัญหาคือว่า$('select option:selected').val()จะใช้ค่าของตัวเลือกแรกในรหัส HTML ในขณะที่$('#selectorId option:selected').val()คุณสามารถมีค่าของตัวเลือกที่คุณระบุรหัส ตรวจสอบความผิดพลาดซ้ำอีกครั้ง นี่คือตัวอย่างที่แสดงสิ่งที่ฉันเพิ่งพูดไป: codepen.io/anon/pen/Nqgqyz
David Torres


9

คุณต้องเพิ่มรหัสในการเลือกของคุณ แล้ว:
$('#selectorID').val()


ฉันมีรหัสเพิ่มแล้วลืมเพิ่มที่นี่
n00b

1
จากสิ่งที่ฉันได้อ่านโดยใช้ ID เป็นตัวเลือกเป็นวิธีที่เร็วที่สุด
มาร์คัส

5

ลองสิ่งนี้:

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

หรือ

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


2

สำหรับการเลือกแบบนี้

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

... คุณจะได้รับ ID ด้วยวิธีนี้:

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

หรือคุณสามารถใช้ค่าแทนและทำให้มันเป็นวิธีที่ง่าย ...

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

แบบนี้:

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

2

<option>-----</option>หนึ่งในตัวเลือกของฉันไม่ได้มีค่า: ฉันพยายามใช้if (!$(this).val()) { .. }แต่ได้ผลลัพธ์ที่แปลก ปรากฎว่าคุณไม่มีvalueแอตทริบิวต์ใน<option>องค์ประกอบของคุณมันจะส่งคืนข้อความภายในแทนที่จะเป็นสตริงว่าง หากคุณไม่ต้องการval()ส่งคืนสิ่งใดสำหรับตัวเลือกของคุณตรวจสอบให้แน่ใจว่าได้เพิ่มvalue=""แล้ว


0

ดูตัวอย่าง:

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

หรือ

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

หรือ

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

@FarhadBagherlo "Keep พิมพ์" ไม่ได้เป็นประโยชน์แก้ไขความคิดเห็น! โปรดสรุปการเปลี่ยนแปลงของคุณเพื่อให้ผู้อ่านประวัติการแก้ไขเข้าใจสิ่งที่คุณทำโดยไม่ตรวจสอบตัวละครที่เปลี่ยนแปลงทุกตัว ขอบคุณ!
jpaugh

0

รหัสนี้ทำงานได้ดีมากสำหรับฉัน: ส่งคืนค่าของตัวเลือกที่เลือก $ ( '# select_id') พบ ( 'ตัวเลือก: เลือก') Val ();..


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

ในขณะที่รหัสนี้สามารถแก้ปัญหาได้ดีที่สุดคือเพิ่มการทำอย่างละเอียดและอธิบายวิธีการทำงานสำหรับผู้ที่อาจไม่เข้าใจรหัสชิ้นนี้
paper1111

@ paper1111 นี่คือฟังก์ชั่นที่เรียบง่าย ฉันสามารถอธิบายได้ถ้าจำเป็น $ ('select [name = นี่คือชื่อ box select]) .change () - ฟังก์ชั่นหมายความว่าเมื่อเราเปลี่ยนฟังก์ชั่นตัวเลือกกล่องเลือกจะทำงาน $ (นี้) .val () - มันคืนค่าตัวเลือกที่เลือก
Turan Zamanlı

0

ลิงค์ที่มา

ใช้ jQuery Val ()เพื่อGETเลือกราคาและและข้อความ ()ที่จะได้รับตัวเลือกข้อความ

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

เปลี่ยนกิจกรรมเมื่อเลือกดร็อปดาวน์

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

คลิกปุ่ม

        $("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());
        });
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.