Bagaimana Anda bisa secara terprogram memberi tahu HTML select
untuk turun (misalnya, karena gerakan mouse)?
javascript
html
Corey Trager
sumber
sumber
<select>
, karena orang mengharapkannya berperilaku dengan cara tertentu dan Anda akan mencegah orang di platform lain (seperti seluler) untuk menggunakan situs Anda.Jawaban:
Anda tidak dapat melakukannya dengan tag pemilihan HTML, tetapi Anda dapat melakukannya dengan JavaScript dan HTML. Ada berbagai kontrol yang melakukan ini - misalnya, daftar "saran" yang dilampirkan ke entri "tag menarik / diabaikan" SO, atau pencarian Gmail untuk alamat email.
Ada banyak kontrol JavaScript + HTML yang menyediakan kemampuan ini - cari kontrol pelengkapan otomatis untuk ide.
Lihat tautan ini untuk kontrol Pelengkapan Otomatis ... http://ajaxcontroltoolkit.codeplex.com/
sumber
Ini dulunya benar-benar dimungkinkan dengan HTML + Javascript, meskipun di tempat lain orang mengatakan tidak, tetapi itu sudah usang nanti dan tidak berfungsi sekarang.
Namun, ini hanya berfungsi di Chrome. Baca lebih lanjut jika Anda tertarik.
Menurut Draf Kerja W3C untuk HTML5, Bagian 3.2.5.1.7. Konten Interaktif :
<select>
menjadi Konten Interaktif, saya percaya bahwa mungkin untuk menampilkan secara terprogram<option>
. Setelah beberapa jam bermain-main, saya menemukan bahwa menggunakandocument.createEvent()
dan.dispatchEvent()
bekerja.Konon, waktu demo. Ini Biola yang berfungsi.
HTML:
Javascript:
Jika ada yang menemukan cara untuk melakukan hal yang sama tetapi tidak di Chrome, silakan memodifikasi biola ini . </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> orang </s>
sumber
IE10
,FF 24
. Bekerja pada:Chrome 30
,Safari 6.0.5
,Opera 16
Jawaban Xavier Ho mencakup cara mengatasi masalah tersebut di sebagian besar browser yang ada saat ini. Tapi, praktik yang baik adalah 'tidak mengirim / mengubah' acara dengan JavaScript lagi . (Seperti,
mousedown
dalam kasus ini)Dari versi 53+, Google Chrome tidak akan melakukan tindakan default untuk acara tidak tepercaya . Seperti acara yang dibuat atau diubah oleh skrip, atau dikirim melalui
dispatchEvent
metode. Perubahan ini untuk menyelaraskan dengan Firefox dan IE yang menurut saya sudah tidak melakukan aksinya.Untuk tujuan pengujian, Fiddle memberikan jawaban Xavier tidak akan berfungsi di chrome 53+. (Saya tidak mengujinya FF dan IE).
Tautan untuk referensi:
https://www.chromestatus.com/features/5718803933560832 https://www.chromestatus.com/features/6461137440735232
Dan initMouseEvent juga tidak digunakan lagi
sumber
Ini yang paling dekat yang bisa saya dapatkan, ubah ukuran elemen onmouseover, dan pulihkan ukuran onmouseout:
sumber
saya memiliki masalah yang sama dan cara yang lebih mudah saya temukan untuk solusi ini dengan html dan css.
sumber
<div style='position:relative'><select> <option>option 1</option> <option>option 2</option> <option>option 3</option> </select> <button>click</button></div>
@DavidPortabellaSaya pikir ini tidak mungkin lagi di Chrome.
Tampaknya chrome versi 53 menonaktifkan fungsi ini seperti yang dinyatakan oleh Asim K T.
Namun mereka telah mengaktifkannya di tampilan web, tetapi saya belum menguji ini.
Dan dalam diskusi ini , ide untuk membiarkan developer membuka dropdown secara terprogram ditinggalkan.
sumber
Jika ada yang masih mencari ini:
Javascript:
Memperbarui:
Satu sampai tidak ada solusi tepat untuk masalah ini, Tetapi Anda dapat mencoba menghindari skenario ini. Mengapa Anda ingin melakukan ini. Saya bertanya-tanya solusi beberapa bulan yang lalu untuk membuat plugin pilihan untuk perangkat seluler
https://github.com/HemantNegi/jquery.sumoselect
Akhirnya berakhir dengan menutupi div khusus (atau elemen lainnya) dengan elemen pilih transparan, sehingga dapat langsung berinteraksi dengan pengguna.
sumber
iniMouseEvent
tampaknya berhasil, tetapi mengapa$(select).trigger('mousedown')
tidak berhasil?Inilah cara terbaik yang saya temukan. CATATAN Ini hanya bekerja dengan IE di Windows dan web Anda mungkin perlu berada di zona aman - karena kami mengakses shell. Triknya adalah ALT-Panah Bawah adalah tombol pintas untuk membuka drop down pilih.
sumber
Berhentilah berpikir bahwa satu hal tidak mungkin, tidak ada yang mustahil untuk dilakukan, ketika Anda ingin melakukannya.
Gunakan fungsi perluasan JS yang dibuat oleh seorang pria.
http://code.google.com/p/expandselect/
Sertakan JS ini dan panggil saja itu meneruskan param sebagai id pilihan Anda, seperti itu:
sumber
<SELECT>
drop down. Karena secara eksplisit menyatakan "Browser tidak mengizinkan perluasan <select> dalam javascript murni, kontrol tersebut hanya dapat diperluas dengan mengklik secara langsung menggunakan mouse". Jadi adalah "tidak mungkin"! Sebaliknya JS menyatakan "Kami meniru kontrol <select> yang diperluas dengan membuat pilihan lain dengan beberapa opsi yang ditampilkan sekaligus ..." Yang sangat berbeda, dan mungkin atau mungkin tidak dapat diterima untuk kasus penggunaan Anda ....Saya mungkin salah, tapi saya tidak percaya itu mungkin dengan kotak pilih default. Anda bisa melakukan sesuatu dengan JS & CSS yang mencapai hasil yang diinginkan, tetapi tidak (sepengetahuan saya) vanilla SELECT.
sumber
Membuka "pemilihan HTML" dimungkinkan melalui beberapa solusi yang disebutkan dalam pertanyaan ini dan yang serupa. Namun cara yang lebih bersih untuk melakukan ini adalah dengan menambahkan perpustakaan pilihan ke proyek Anda seperti "select2" atau "dipilih". Misalnya, membuka select2 secara terprogram semudah:
sumber
Ini bukan yang Anda minta, tetapi saya suka solusi ini karena kesederhanaannya. Dalam kebanyakan kasus di mana saya ingin memulai dropdown, itu karena saya memvalidasi bahwa pengguna benar-benar telah membuat pilihan. Saya mengubah ukuran dropdown dan memfokuskannya, yang dengan baik menyoroti apa yang telah mereka lewati:
sumber