Cara mengatur nilai yang dipilih pada pilih menggunakan plugin selectpicker dari bootstrap


97

Saya menggunakan plugin Bootstrap-Select seperti ini:

HTML :

<select name="selValue" class="selectpicker">
   <option value="1">Val 1</option>
   <option value="2">Val 2</option>
   <option value="3">Val 3</option>
   <option value="4">Val 4</option>
</select>

Javascript :

$('select[name=selValue]').selectpicker();

Sekarang saya ingin mengatur nilai yang dipilih untuk memilih ini ketika tombol diklik ... sesuatu seperti ini:

$('#mybutton').click(function(){
   $('select[name=selValue]').val(1);
});

Tapi tidak ada yang terjadi.

Bagaimana saya bisa mencapai ini?


1
Saya tidak yakin apa yang ingin Anda capai, nilai ditetapkan setelah pengguna mengklik opsi itu di pilih
Tom Sarduy

Ya karena benar-benar nilainya berasal dari metode pada panggilan ajax ...
jcvegan

1
Nilai dipilih dengan benar, tetapi Anda tidak melihatnya karena plugin menyembunyikan pemilihan yang sebenarnya dan menampilkan tombol dengan daftar yang tidak
diurutkan

Ya saya tahu itu, tapi bagaimana memperbaikinya ... maksud saya ... pengguna harus melihat pilihan pada kontrol ini
jcvegan

Jawaban:


148

Nilai dipilih dengan benar, tetapi Anda tidak melihatnya karena plugin menyembunyikan pemilihan yang sebenarnya dan menampilkan tombol dengan daftar tidak berurutan, jadi, jika Anda ingin pengguna melihat nilai yang dipilih pada pilihan, Anda dapat melakukan sesuatu seperti ini :

//Get the text using the value of select
var text = $("select[name=selValue] option[value='1']").text();
//We need to show the text inside the span that the plugin show
$('.bootstrap-select .filter-option').text(text);
//Check the selected attribute for the real select
$('select[name=selValue]').val(1);

Edit:

Seperti yang ditunjukkan @blushrt, solusi yang lebih baik adalah:

$('select[name=selValue]').val(1);
$('.selectpicker').selectpicker('refresh')

Edit 2:

Untuk memilih beberapa nilai, berikan nilai sebagai larik.


29
Solusi yang lebih baik adalah: $('select[name=selValue]').val(1);$('.selectpicker').selectpicker('refresh');Dengan cara ini Anda hanya mengubah pilihan yang tersembunyi, memanggil pemilih pilih ('segarkan') menggambar ulang tombol.
blushrt

ya, cara ini lebih baik @blushrt, ditambahkan ke jawaban saya
Tom Sarduy

Saya menghadapi masalah yang sama bahwa saya tidak dapat memilih nilai yang telah dipilih sebelumnya yang telah dipilih pengguna secara pribadi.
Srikanth Pullela

Apakah perlu menyegarkan pemilih pemilih setelah itu ?? @TomSarduy
ankit suthar

@ankitsuthar, ya
Tom Sarduy

72
$('select[name=selValue]').val(1);
$('.selectpicker').selectpicker('refresh');

Hanya ini yang perlu Anda lakukan. Tidak perlu mengubah html yang dihasilkan dari selectpicker secara langsung, cukup ubah bidang pilih tersembunyi, lalu panggil pemilih pilih ('segarkan').


8
Ini harus menjadi jawaban yang benar! Memanggil perintah .selectpicker ('refresh') sangat penting untuk memilih dan memperbarui nilai saat ini dari dropdownlist yang didukung selectpicker. Harap diperhatikan, memanggil segarkan pada SEMUA elemen .selectpicker bisa lambat. Jika Anda tahu objek untuk beroperasi- lebih disukai untuk memanggil refresh pada daftar pilih tunggal itu.
nocarrier

$('.selectpicker').selectpicker('refresh'); dapat mematikan kinerja Anda jika Anda memiliki banyak pemilih dalam satu halaman
Michel

Masalah lain yang saya temukan adalah, Ini tidak akan mencentang pilihan.
Sajeer Babu

43
$('.selectpicker').selectpicker('val', YOUR_VALUE);

Saya telah mencoba solusi Anda .. tetapi yang menunjukkan 'tidak ada yang dipilih' dalam pilihan saya, meskipun saya telah memilih nilai dan saya mendapatkan yang sama dari sumber daya tempat saya menyimpan data.
Shilpi Jaiswal

16

Tidak diperlukan penyegaran jika parameter "val" digunakan untuk menyetel nilai, lihat biola . Gunakan tanda kurung untuk nilai untuk mengaktifkan beberapa nilai yang dipilih.

$('.selectpicker').selectpicker('val', [1]); 

10
$('#mybutton').click(function(){
   $('select[name=selValue]').val(1);
   $('select[name=selValue]').change();
});

Ini berhasil untuk saya.



3

Anda dapat menyetel nilai yang dipilih dengan memanggil metode val pada elemen.

$('.selectpicker').selectpicker('val', 'Mustard');
$('.selectpicker').selectpicker('val', ['Mustard','Relish']);

Ini akan memilih semua item dalam pilihan banyak.

$('.selectpicker').selectpicker('selectAll');

detail tersedia di situs: https://silviomoreto.github.io/bootstrap-select/methods/


Saya telah mencoba solusi Anda .. tetapi yang menunjukkan 'tidak ada yang dipilih' dalam pilihan saya, meskipun saya telah memilih nilai dan saya mendapatkan yang sama dari sumber daya tempat saya menyimpan data.
Shilpi Jaiswal

3

$('selector').selectpicker('val',value);

Di tempat selektor Anda dapat memberi Anda selektor baik kelas atau id misalnya: $('#mySelect').selectpicker('val',your_value)


2
var bar= $(#foo).find("option:selected").val();

1

Variasi kecil dari blushrt jawaban ketika Anda tidak memiliki nilai "hard code" untuk opsi (yaitu 1, 2, 3, 4 dll.)

Katakanlah Anda merender <select>dengan nilai opsi menjadi GUID dari beberapa pengguna. Maka Anda akan perlu entah bagaimana mengekstrak nilai opsi untuk mengaturnya di <select>.

Berikut ini kami memilih opsi pertama dari pilih.

HTML :

<select name="selValue" class="selectpicker">
   <option value="CD23E546-9BD8-40FD-BD9A-3E2CBAD81A39">Dennis</option>
   <option value="4DDCC643-0DE2-4B78-8393-33A716E3AFF4">Robert</option>
   <option value="D3017807-86E2-4E56-9F28-961202FFF095">George</option>
   <option value="991C2782-971E-41F8-B532-32E005F6A349">Ivanhoe</option>
</select>

Javascript :

// Initialize the select picker.
$('select[name=selValue]').selectpicker();

// Extract the value of the first option.
var sVal = $('select[name=selValue] option:first').val();

// Set the "selected" value of the <select>.
$('select[name=selValue]').val(sVal);

// Force a refresh.
$('select[name=selValue]').selectpicker('refresh');

Kami menggunakan ini dalam pemilihan dengan beberapa kata kunci <select multiple>. Dalam hal ini tidak ada yang dipilih secara default, tetapi kami ingin item pertama selalu dipilih.


1

Berdasarkan jawaban bagus @blushrt, saya akan memperbarui tanggapan ini. Hanya menggunakan -

$("#Select_ID").val(id);

berfungsi jika Anda telah memuat semua yang Anda butuhkan ke pemilih.


1
$('.selectpicker').selectpicker("val", "value");

Abd, saya punya script php yang meneruskan format json ke ajax dimana format jsonnya seperti itu: "car": "8", "colors": "red, blue, white"} . Dalam hal ini bagaimana bisa menyisipkan objek "warna" seperti yang diperiksa di dalam pemilih pilih menggunakan metode ini $ ('. Selectpicker'). Selectpicker ("val", "data.colors"); ?
Michel Xavier

0
$('.selectpicker').selectpicker('val', '0');

Dengan '0' menjadi nilai item yang ingin Anda pilih


0

Nah cara lain untuk melakukannya adalah, dengan kata kunci ini , Anda dapat dengan mudah mendapatkan objek di sini dan memanipulasi nilainya. Misal:

$("select[name=selValue]").click(
    function() {
        $(this).val(1);
    });


0
$('.selectpicker option:selected').val();

Taruh saja opsi: dipilih untuk mendapatkan nilai, karena pemilih bootstrap berubah menjadi dan muncul dengan cara yang berbeda. Tapi pilih tetap ada yang terpilih


-1

ID Pengguna Untuk elemen, lalu

document.getElementById('selValue').value=Your Value;
$('#selValue').selectpicker('refresh');

-2

gunakan ini dan itu akan berhasil:

 $('select[name=selValue]').selectpicker('val', 1);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.