jQuery เพื่อดึงและตั้งค่าตัวเลือกที่เลือกของ html select element


126

ฉันกำลังพยายามดึงและตั้งค่าที่เลือกขององค์ประกอบที่เลือก (รายการแบบเลื่อนลง) ด้วย jQuery

สำหรับการดึงข้อมูลฉันได้ลอง$("#myId").find(':selected').val()แล้วเช่นเดียวกับ$("#myId").val()แต่ทั้งสองกลับไม่ได้กำหนด

ความเข้าใจในปัญหานี้จะได้รับการชื่นชมมาก


หากคุณใช้ asp .net Id อาจไม่เหมือนกันเมื่อแสดงผล!
Rigobert Song

คำตอบ:


154

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

ตรวจสอบรหัสขององค์ประกอบและตรวจสอบการตรวจสอบมาร์กอัปของคุณที่นี่ที่ W3c

หากไม่มี jQuery dom ที่ถูกต้องจะไม่สามารถทำงานกับตัวเลือกได้อย่างถูกต้อง

หากรหัสถูกต้องและโดเมนของคุณตรวจสอบความถูกต้องแล้วจะใช้สิ่งต่อไปนี้:

ในการอ่านเลือกค่าตัวเลือก

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

ในการตั้งค่า Select Option Value

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

เพื่ออ่านข้อความที่เลือก

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

@ Html.DropDownList ("CoinTypes", (SelectList) ViewBag.RequiredLevel, ใหม่ {@class = "form-control", @ style = "height: 21px; margin-top: 5px;"}) แต่ $ ('# CoinTypes ') .val (@ ViewBag.CoinType); ไม่ได้เลือก
Nithin Paul

@NithinPaul ไม่ใช่ความคิดเห็นจริงๆถามคำถามที่แสดง html เพื่อให้ใครบางคนได้ลองคิดดูว่ามีอะไรผิดปกติ ไม่แน่ใจว่าคุณจะคาดหวังให้ใคร ๆ ทำงานได้อย่างไรจากเว็บฟอร์ม / โค้ด mvc!
redsquare

248

เพื่อรับ / ตั้งค่าคุณสมบัติ selectedIndex จริงขององค์ประกอบที่เลือกใช้:

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

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

19
สิ่งสำคัญคือต้องทราบว่าคุณลักษณะ prop () ถูกนำไปใช้ในเวอร์ชัน 1.6 ดังนั้นเวอร์ชันก่อนหน้าจึงไม่มีฟังก์ชันนี้
RobB

18
ฉันชอบคำตอบนี้เพราะมันตอบคำถามในการเข้าถึงดัชนีไม่ใช่แค่ค่าเท่านั้น
Pablo Diaz

4
ใช่. ฉันคิดว่านั่นเป็นคำถามเดิม
Jack Holt

คุณอาจใช้ attr กับไวยากรณ์เดียวกันได้และไม่เป็นไร
Yitzhak

7
@ M.YitzhakSamuel .attr()และ.prop()ไม่ตรงกัน มันจะทำงานในบางกรณีที่แอตทริบิวต์ยังเป็นสถานที่ให้บริการเช่นมีค่าเท่ากับ.attr('id') .prop('id')ในกรณีนี้จะมีค่าเท่ากับ.prop('selectedIndex') .get(0).selectedIndex
WynandB


4

เมื่อตั้งค่าด้วยJQMอย่าลืมอัปเดตUI:

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

ขอบคุณสำหรับนักเก็ตคนนี้ - สงสัยว่าทำไมค่าใหม่ไม่แสดงบนหน้าจอหลังจากเปลี่ยน selectedIndex ด้วย $ ("# slot-choice") prop ("selectedIndex", n)
Samik R

3

$("#myId").val()ควรใช้งานได้ถ้าmyidเป็นรหัสองค์ประกอบที่เลือก!

สิ่งนี้จะตั้งค่ารายการที่เลือก: $("#myId").val('VALUE');


1

สมมติว่าคุณได้สร้างรายการแบบหล่นลงโดยใช้แท็ก SELECT ดังนี้

<select id="Country">

ตอนนี้ถ้าคุณต้องการดูว่าค่าที่เลือกจากดรอปดาวน์โดยใช้ JQuery คืออะไรให้ใส่บรรทัดต่อไปนี้เพื่อดึงค่านั้น ..

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

มันจะทำงานได้ดี


0

ฉันรู้ว่ามันเก่า แต่ฉันเพิ่งมีช่วงเวลาหนึ่งกับ Razor ไม่สามารถทำให้มันทำงานได้ไม่ว่าฉันจะพยายามแค่ไหนก็ตาม ยังคงกลับมาเป็น "ไม่ได้กำหนด" ไม่ว่าฉันจะใช้ "text" หรือ "html" สำหรับแอตทริบิวต์ ในที่สุดฉันก็เพิ่มแอตทริบิวต์ "data-value" ให้กับตัวเลือกและมันก็อ่านได้ดี

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

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

0

$ ("#myId ตัวเลือก: ที่เลือก") .text (); จะให้ข้อความที่คุณเลือกในองค์ประกอบแบบเลื่อนลง ทางใดทางหนึ่งคุณสามารถเปลี่ยนเป็น. val (); เพื่อรับคุณค่าของมัน ตรวจสอบการเข้ารหัสด้านล่าง

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

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