jQuery select2 รับค่าของ Select tag?


98

สวัสดีเพื่อนนี่คือรหัสของฉัน:

<select id='first'>
  <option value='1'> First  </option>
  <option value='2'> Second </option>
  <option value='3'> Three  </option>
</select>

นี่คือรหัส select2 ของฉัน:

$("#first").select2();

ด้านล่างนี้คือรหัสสำหรับรับค่าที่เลือก

$("#first").select2('val'); // It returns first,second,three.

นี่คือกลับข้อความเหมือนและฉันต้องการที่จะได้รับfirst,second,three หมายความว่าฉันต้องการค่าของกล่องเลือกไม่ใช่ข้อความ1,2,3


คุณสามารถจัดหา JSFiddle ได้หรือไม่? มันจะมีประโยชน์มาก
IonicăBizău

1
คำถามไม่ชัดเจน คุณต้องการอะไรกันแน่?
Hiral

คำตอบ:


154
$("#first").val(); // this will give you value of selected element. i.e. 1,2,3.

5
$ ("# แรก"). val (); // ส่งคืน 1,2,3 หรือ $ ("# first"). select2 ('val'); // กลับก่อนสองสาม
Renish Khunt

$ ("# แรก"). val (); จะส่งคืน 1,2,3 (ซึ่งเคยถูกเลือกไว้) และคุณสามารถโพสต์รหัสในฟังก์ชัน select2 () เพื่อดูรายละเอียดเพิ่มเติม
somesh

สำหรับการเลือกที่เรียกโดยชื่อ id แทนชื่อคลาสให้ใช้: $ (". first"). val ()
Rui Martins

@RuiMartins ผิด. ID เรียกด้วย "#" และคลาสจะเรียกด้วย "." ดังนั้นในการเรียกด้วย ID คุณจะต้องใช้ $ ("# first"). val () และสำหรับ CLASS คุณจะใช้ $ (". first" ) .val ()
ที่มาเรื่อง

60

ในการรับเลือกองค์ประกอบคุณสามารถใช้ได้ $('#first').val();

เพื่อรับข้อความของค่าที่เลือก - $('#first :selected').text();

คุณช่วยโพสต์select2()รหัสฟังก์ชันของคุณได้ไหม


1
$ ("# แรก"). val (); // ส่งคืน 1,2,3 หรือ $ ("# first"). select2 ('val'); // กลับก่อนสองสาม
Renish Khunt

ฉันไม่แน่ใจฉันเข้าใจคำถามของคุณ
Krish R

1
เมื่อฉันใช้ปลั๊กอิน select2 ฉันจะได้รับค่าโดยใช้ $ ("# first"). val () มันไม่ส่งคืนสิ่งที่กลับมาว่างเปล่า
Renish Khunt

คุณสามารถจัดหา exmaple กับปลั๊กอินของคุณได้หรือไม่?
Krish R

1
ฉันต้องใช้$('#first :selected').text();ตัวเลือกอื่นคืนตัวเลือกที่เป็นไปได้ทั้งหมด
Jeff Bluemel


10

หากคุณใช้ ajaxคุณอาจต้องการรับค่าที่อัปเดตของการเลือกทันทีหลังจากการเลือก

//Part 1

$(".element").select2(/*Your code*/)    

//Part 2 - continued 

$(".element").on("select2:select", function (e) { 
  var select_val = $(e.currentTarget).val();
  console.log(select_val)
});

เครดิต: Steven-Johnston


สวัสดีฉันขอทราบได้ไหมว่าcurrentTargetมาจากไหน ไม่มีตัวอย่าง ID / ชื่อของคุณที่เกี่ยวข้องกับคำถาม ดังนั้นฉันจึงไม่สามารถเกี่ยวข้องได้ทุกที่
mastersuse

ขอบคุณเจ้านายของฉันมาก: p Happy Coding
Vipertecpro

8

วิธีนี้ช่วยให้คุณลืมเลือกองค์ประกอบ มีประโยชน์เมื่อคุณไม่มี id ในองค์ประกอบที่เลือก

$("#first").select2()
.on("select2:select", function (e) {
    var selected_element = $(e.currentTarget);
    var select_val = selected_element.val();
});


3

ลองสิ่งนี้:

$('#input_id :selected').val(); //for getting value from selected option
$('#input_id :selected').text(); //for getting text from selected option

@RenishKhunt คำตอบที่นี่ไม่เพียง แต่สำหรับคุณ (ผู้ถามคำถาม) แต่ยังรวมถึงคนอื่น ๆ ที่เห็นหน้านี้ด้วย และยิ่งมีการส่งโซลูชันที่แตกต่างกันมากขึ้นที่นี่ทางเลือกที่ดีกว่าก็มีทุกคนอีกแล้วไม่ใช่แค่คุณ :)
infografnet

ใช่ฉันขอโทษ ขอบคุณ @infografnet และขอบคุณคุณ Fahmi Imanudin มากที่โพสต์คำตอบ :)
Renish Khunt

2

ดูซอนี้
โดยพื้นฐานแล้วคุณต้องการรับแท็กvalueของคุณoptionแต่คุณพยายามหาค่าของselect-node ของคุณด้วย$("#first").val().

ดังนั้นเราต้องเลือกแท็กตัวเลือกและเราจะใช้ตัวเลือก jQuerys:

$("#first option").each(function() {
    console.log($(this).val());
});

$("#first option")เลือกทุกซึ่งเป็นลูกขององค์ประกอบที่มีประชาชนได้optionfirst


$ ("# แรก"). val (); // ส่งคืน 1,2,3 หรือ $ ("# first"). select2 ('val'); // กลับก่อนสองสาม
Renish Khunt

ดูเหมือนว่าฉันจะตอบคำถามของคุณผิดโปรดชี้แจงสิ่งที่คุณต้องการบรรลุ
KeyNone

เมื่อฉันใช้ปลั๊กอิน select2 ฉันจะได้รับค่าโดยใช้ $ ("# first"). val () มันไม่ส่งคืนสิ่งที่กลับมาว่างเปล่า
Renish Khunt

ดูซอนี้ ทำงานได้ดีสำหรับฉัน (ฉันเพิ่ม select2.js ภายใต้ทรัพยากรภายนอกแม้ว่าฉันจะไม่สามารถบอกได้ว่าทำไมกล่องถึงดูน่าเกลียด)
KeyNone

ที่สำคัญคือคุณบอกว่าเราต้องการรับค่าของแท็กตัวเลือก!
Dariux


0

คำตอบอื่น ๆ ไม่ได้ผลสำหรับฉันดังนั้นฉันจึงพัฒนาวิธีแก้ปัญหา:

ฉันสร้างตัวเลือกด้วย class = "option-item"เพื่อการกำหนดเป้าหมายที่ง่าย

HTML:

<select id="select-test">
<option value="5-val" id="first-id" class="option-item"> First option </option>
</select>

จากนั้นสำหรับทุกตัวเลือกที่เลือกฉันเพิ่มคุณสมบัติที่ไม่มีการแสดงผล

CSS:

option:checked {
   display: none;
}

ตอนนี้เราสามารถเพิ่มการเปลี่ยนแปลงใน SelectBox ของเราเพื่อค้นหาตัวเลือกที่เราเลือกด้วยคุณสมบัติ display none โดย simple : hidden attribute

jQuery:

$('#select-test').change(function(){
//value 
    $('#select-test').find('.option-item:hidden').val();
//id
    $('#select-test').find('.option-item:hidden').attr('id');
//text
    $('#select-test').find('.option-item:hidden').text();
});

การเล่นซอ: https://jsfiddle.net/Friiz/2dk4003j/10/


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.