JQuery - วิธีเลือกรายการแบบเลื่อนลงตามมูลค่า


86

ฉันต้องการตั้งค่ารายการแบบเลื่อนลง (เลือก) เพื่อเปลี่ยนแปลงตามค่าของรายการ

ฉันมี

<select id="mySelect">
  <option value="ps">Please Select</option>
  <option value="ab">Fred</option>
  <option value="fg">George</option>
  <option value="ac">Dave</option>
</select>

และฉันรู้ว่าฉันต้องการเปลี่ยนดรอปดาวน์เพื่อให้เลือกตัวเลือกที่มีค่าเป็น "fg" ฉันจะทำสิ่งนี้กับ JQuery ได้อย่างไร?


ฉันคิดว่ามันเรียบง่าย แต่ดูเหมือนจะไม่ได้ผล ฉันเดาว่าถึงเวลาแก้ไขจุดบกพร่อง
Mark W


1
ชื่อของคุณทำให้เข้าใจผิดเล็กน้อย คุณไม่ได้เลือกรายการแบบเลื่อนลงคุณกำลังเลือกตัวเลือกในเมนูแบบเลื่อนลง ... ซึ่งเป็นสาเหตุที่มี 7 คำตอบที่ไม่ได้ช่วยฉันเลย ...
user1566694

@ user1566694 ถ้าคุณต้องการใช้เทคนิคมันไม่ได้เรียกว่าแบบเลื่อนลงจริงๆมันคือ "เลือก"
Mark W

คำตอบ:


156

คุณควรใช้

$('#dropdownid').val('selectedvalue');

นี่คือตัวอย่าง:

$('#dropdownid').val('selectedvalue');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='dropdownid'>
    <option value=''>- Please choose -</option>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='selectedvalue'>There we go!</option>
    <option value='3'>3</option>
    <option value='4'>4</option>
    <option value='5'>5</option>
</select>


21
เห็นด้วยกับข้างต้น ตามรหัสของคุณมันจะเป็น$('#mySelect option[value="fg"]').attr('selected', true)
Martavis P.

ความผิดพลาดของฉัน. ฉันเห็นว่ามันใช้ไม่ได้ในบางกรณี แต่มันก็ชัดเจนในเสียงซอ
Martavis P.

2
ฉันจะระมัดระวังกับเรื่องนี้ ไม่ทริกเกอร์เหตุการณ์ 'เปลี่ยนแปลง' บนแท็ก <select> หากคุณไม่ได้ใช้เหตุการณ์นั้นก็ไม่เป็นไร
Chad Fisher

2
@ChadFisher หากคุณกำลังใช้เหตุการณ์การเปลี่ยนแปลงทริกเกอร์ด้วย$('#dropdownid').val('selectedvalue').trigger('change');
Liam

การเปลี่ยนแปลงทริกเกอร์จะช่วยได้เมื่อคุณเขียนโค้ดติดตามเพื่อดำเนินการบางอย่างเช่นการอัปเดตโมเดลแม้การอัปเดตโมเดลมุมมอง ASP.net ก็เกิดขึ้นในเหตุการณ์การเปลี่ยนแปลงของ DD +1
Div Tiwari



8

คุณสามารถใช้รหัส jQuery ซึ่งฉันพบว่ามันใช้ง่าย:

$('#your_id [value=3]').attr('selected', 'true');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select id="your_id" name="name" class="form-control input-md">
  <option value="1">Option #1</option>
  <option value="2">Option #2</option>
  <option value="3">Option #3</option>
  <option value="4">Option #4</option>
  <option value="5">Option #5</option>
  <option value="6">Option #6</option>
  <option value="7">Option #7</option>
</select>


7
 $('#mySelect').val('ab').change();

 // or

 $('#mySelect').val('ab').trigger("change");

1
หรือ $ ('# mySelect'). val ('ab'). trigger ("เปลี่ยน") ;; ในกรณีที่คุณใช้ปลั๊กอิน select2
Vaibhav Jain

1
.change () ช่วยฉันในการอัปเดตแอตทริบิวต์รุ่น ASP.net MVC ของฉัน ขอบคุณสำหรับคำตอบ.
Div Tiwari

ขอบคุณ ... .trigger ('change') ทำงานได้อย่างสมบูรณ์แบบ!
LUISAO



2

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

คุณสามารถลองสองตัวเลือก:

นี่คือผลลัพธ์เมื่อคุณต้องการกำหนดตามค่าดัชนีโดยที่ '0' คือดัชนี

 $('#mySelect').prop('selectedIndex', 0);

อย่าใช้ 'attr' เนื่องจากเลิกใช้กับ jquery ล่าสุดแล้ว

เมื่อคุณต้องการเลือกตามค่าตัวเลือกให้เลือกสิ่งนี้:

 $('#mySelect').val('fg');

โดยที่ 'fg' คือค่าตัวเลือก


ไม่ค่อยมีการใช้การเลือกตามดัชนี แต่เป็นตัวเลือกที่ดีเนื่องจากสถานการณ์ที่คุณเขียนรหัสทั่วไปสำหรับการตั้งค่าแบบเลื่อนลงและค่าจะแตกต่างกันไปตาม DD ที่แตกต่างกัน ขอบคุณ :).
Div Tiwari

1

$('#dropdownid').val('selectedvalue');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='dropdownid'>
    <option value=''>- Please choose -</option>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='selectedvalue'>There we go!</option>
    <option value='3'>3</option>
    <option value='4'>4</option>
    <option value='5'>5</option>
</select>


1

รหัสนี้ใช้ได้กับฉัน:

$(function() {
    $('[id=mycolors] option').filter(function() { 
        return ($(this).text() == 'Green'); //To select Green
    }).prop('selected', true);
});

ด้วยรายการเลือก HTML นี้:

<select id="mycolors">
      <option value="1">Red</option>
      <option value="2">Green</option>
      <option value="3">Blue</option>
</select>

0

ฉันมีสถานการณ์ที่แตกต่างออกไปซึ่งค่ารายการแบบหล่นลงได้รับการเข้ารหัสอย่างหนักแล้ว มีเพียง 12 เขตเท่านั้นดังนั้นการควบคุม UI ของการเติมข้อความอัตโนมัติ jQuery จึงไม่ถูกเติมด้วยโค้ด

วิธีแก้ง่ายกว่ามาก เนื่องจากฉันต้องลุยผ่านโพสต์อื่น ๆ ซึ่งสันนิษฐานว่ากำลังโหลดการควบคุมแบบไดนามิกไม่พบสิ่งที่ฉันต้องการและในที่สุดก็คิดออก

ดังนั้นเมื่อคุณมี HTML ดังต่อไปนี้การตั้งค่าดัชนีที่เลือกจะถูกตั้งค่าเช่นนี้ให้สังเกตส่วน -input ซึ่งอยู่นอกเหนือจากรหัสแบบเลื่อนลง:

$('#project-locationSearch-dist-input').val('1');

                <label id="lblDistDDL" for="project-locationSearch-input-dist" title="Select a district to populate SPNs and PIDs or enter a known SPN or PID." class="control-label">District</label>
                <select id="project-locationSearch-dist" data-tabindex="1">
                    <option id="optDistrictOne" value="01">1</option>
                    <option id="optDistrictTwo" value="02">2</option>
                    <option id="optDistrictThree" value="03">3</option>
                    <option id="optDistrictFour" value="04">4</option>
                    <option id="optDistrictFive" value="05">5</option>
                    <option id="optDistrictSix" value="06">6</option>
                    <option id="optDistrictSeven" value="07">7</option>
                    <option id="optDistrictEight" value="08">8</option>
                    <option id="optDistrictNine" value="09">9</option>
                    <option id="optDistrictTen" value="10">10</option>
                    <option id="optDistrictEleven" value="11">11</option>
                    <option id="optDistrictTwelve" value="12">12</option>
                </select>

สิ่งอื่นที่พบเกี่ยวกับการควบคุมการเติมข้อความอัตโนมัติคือวิธีปิดใช้งาน / ล้างข้อมูลอย่างถูกต้อง เรามีการควบคุม 3 อย่างที่ทำงานร่วมกันโดย 2 ส่วนควบคุมพิเศษร่วมกัน:

//SPN
spnDDL.combobox({
    select: function (event, ui) {
        var spnVal = spnDDL.val();
        //fire search event
        $('#project-locationSearch-pid-input').val('');
        $('#project-locationSearch-pid-input').prop('disabled', true);
        pidDDL.empty(); //empty the pid list
    }
});
//get the labels so we have their tool tips to hand.
//this way we don't set id values on each label
spnDDL.siblings('label').tooltip();

//PID
pidDDL.combobox({
    select: function (event, ui) {
        var pidVal = pidDDL.val();
        //fire search event
        $('#project-locationSearch-spn-input').val('');
        $('#project-locationSearch-spn-input').prop('disabled', true);
        spnDDL.empty(); //empty the spn list
    }
});

บางส่วนอยู่นอกเหนือขอบเขตของโพสต์และฉันไม่รู้ว่าจะวางไว้ตรงไหน เนื่องจากสิ่งนี้มีประโยชน์มากและต้องใช้เวลาพอสมควรจึงมีการแบ่งปัน

ยกเลิกนอกจากนี้ ... ในการเปิดใช้งานการควบคุมเช่นนี้มันเป็น (ปิดใช้งานเท็จ) และไม่ (เปิดใช้งานจริง) - ซึ่งต้องใช้เวลาเล็กน้อยในการคิดออก :)

สิ่งเดียวที่ควรทราบนอกเหนือจากโพสต์คือ:

    /*
Note, when working with the jQuery Autocomplete UI control,
the xxx-input control is a text input created at the time a selection
from the drop down is picked.  Thus, it's created at that point in time
and its value must be picked fresh.  Can't be put into a var and re-used
like the drop down list part of the UI control.  So you get spnDDL.empty()
where spnDDL is a var created like var spnDDL = $('#spnDDL);  But you can't
do this with the input part of the control.  Winded explanation, yes.  That's how
I have to do my notes or 6 months from now I won't know what a short hand note means
at all. :) 
*/
    //district
    $('#project-locationSearch-dist').combobox({
        select: function (event, ui) {
            //enable spn and pid drop downs
            $('#project-locationSearch-pid-input').prop('disabled', false);
            $('#project-locationSearch-spn-input').prop('disabled', false);
            //clear them of old values
            pidDDL.empty();
            spnDDL.empty();
            //get new values
            GetSPNsByDistrict(districtDDL.val());
            GetPIDsByDistrict(districtDDL.val());
        }
    });

แชร์ทั้งหมดเนื่องจากใช้เวลานานเกินไปในการเรียนรู้สิ่งเหล่านี้ในทันที หวังว่านี่จะเป็นประโยชน์


คุณได้หลีกเลี่ยงหัวข้อที่นี่แล้ว คำถามคือการเปลี่ยนแปลงง่ายๆที่เลือกตามค่าของ JQuery ไม่มีองค์ประกอบ UI ที่เกี่ยวข้อง
Mark W


0

คุณสามารถเลือกค่าตัวเลือกแบบเลื่อนลงตามชื่อ

// deom
jQuery("#option_id").find("option:contains('Monday')").each(function()
{
 if( jQuery(this).text() == 'Monday' )
 {
  jQuery(this).attr("selected","selected");
  }

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