Pertanyaan jQuery - pengaturan nilai yang dipilih dari kontrol pilih melalui deskripsi teksnya


Saya memiliki kontrol pilih, dan dalam variabel javascript saya memiliki string teks.

Menggunakan jQuery Saya ingin mengatur elemen yang dipilih dari kontrol pilih menjadi item dengan deskripsi teks yang saya miliki (sebagai lawan dari nilai, yang saya tidak punya).

Saya tahu pengaturannya dengan nilai cukup sepele. misalnya

$("#my-select").val(myVal);

Tapi saya agak bingung melakukannya melalui deskripsi teks. Saya kira pasti ada cara untuk mendapatkan nilai dari deskripsi teks, tetapi otak saya terlalu siang hari Jumat untuk dapat menyelesaikannya.


508
2018-01-30 16:12


asal


Jawaban:


Mengingat HTML ini:

<select>
    <option value="0">One</option>
    <option value="1">Two</option>
</select>

Pilih dengan uraian untuk jQuery v1.6 +:

var text1 = 'Two';
$("select option").filter(function() {
    //may want to use $.trim in here
    return $(this).text() == text1; 
}).prop('selected', true);

Pilih berdasarkan uraian untuk versi jQuery di bawah 1.6 dan lebih besar dari atau sama dengan 1.4: https://stackoverflow.com/a/3644500/31532

var text1 = 'Two';
$("select option").filter(function() {
    //may want to use $.trim in here
    return $(this).text() == text1; 
}).attr('selected', true);

Perhatikan bahwa meskipun pendekatan ini akan bekerja dalam versi di atas 1,6 tetapi kurang dari 1,9, itu sudah tidak berlaku lagi sejak 1.6. Saya t Tidak akan berhasil di jQuery 1.9+.

Pilih berdasarkan uraian untuk versi sebelumnya:

val() harus menangani kedua kasus. Apakah kamu tidak melihatnya?

Misalnya:

$('select').val('1'); // selects "Two"
$('select').val('Two'); // also selects "Two"

734
2018-01-30 16:25



Saya belum menguji ini, tetapi ini mungkin berhasil untuk Anda.

$("select#my-select option")
   .each(function() { this.selected = (this.text == myVal); });

136
2018-01-30 16:22



Coba ini ... untuk memilih opsi dengan teks myText

$("#my-Select option[text=" + myText +"]").attr("selected","selected");

88
2018-01-30 16:51



Saya melakukannya dengan cara ini (jQuery 1.9.1)

$("#my-select").val("Dutch").change();

Catatan: jangan lupa perubahan (), saya harus mencari lama karena itu :)


31
2017-09-15 15:17



$("#myselect option:contains('YourTextHere')").val();

akan mengembalikan nilai opsi pertama yang berisi deskripsi teks Anda. Diuji ini dan bekerja.


19
2018-01-30 16:36



Untuk menghindari semua komplikasi versi jQuery, sejujurnya saya sarankan untuk menggunakan salah satu fungsi javascript yang sangat sederhana ini ...

function setSelectByValue(eID,val)
{ //Loop through sequentially//
  var ele=document.getElementById(eID);
  for(var ii=0; ii<ele.length; ii++)
    if(ele.options[ii].value==val) { //Found!
      ele.options[ii].selected=true;
      return true;
    }
  return false;
}

function setSelectByText(eID,text)
{ //Loop through sequentially//
  var ele=document.getElementById(eID);
  for(var ii=0; ii<ele.length; ii++)
    if(ele.options[ii].text==text) { //Found!
      ele.options[ii].selected=true;
      return true;
    }
  return false;
}

15
2018-05-08 15:49



Saya tahu ini adalah posting lama, tapi saya tidak bisa mendapatkannya dengan memilih teks menggunakan jQuery 1.10.3 dan solusi di atas. Saya akhirnya menggunakan kode berikut (variasi solusi spoulson):

      var textToSelect = "Hello World";

      $("#myDropDown option").each(function (a, b) {
            if ($(this).html() == textToSelect ) $(this).attr("selected", "selected");
        });

Semoga itu membantu seseorang.


9
2017-10-02 13:54



Baris ini berhasil:

$("#myDropDown option:contains(myText)").attr('selected', true);

9
2017-12-12 19:42



 $("#Test").find("option:contains('two')").each(function(){
     if( $(this).text() == 'two' ) {
        $(this).attr("selected","selected");
     }
 });

Pernyataan if yang sama persis dengan "dua" dan "dua tiga" tidak akan dicocokkan


7
2017-07-07 13:14



Cara termudah dengan 1.7+ adalah:

$("#myDropDown option:text=" + myText +"").attr("selected", "selected"); 

1.9+

$("#myDropDown option:text=" + myText +"").prop("selected", "selected"); 

Diuji dan berfungsi.


5
2017-08-31 16:01