Di HTML5, search
tipe input muncul dengan sedikit X di sebelah kanan yang akan menghapus kotak teks (setidaknya di Chrome, mungkin yang lain). Apakah ada cara untuk mendeteksi kapan X ini diklik dalam Javascript atau jQuery selain dari, katakanlah, mendeteksi ketika kotak diklik sama sekali atau melakukan semacam pendeteksian lokasi (posisi-x / posisi-y)?
javascript
jquery
html
events
dom-events
Jason
sumber
sumber
onchange
acara?Jawaban:
Sebenarnya, ada acara "pencarian" yang dipecat setiap kali pengguna mencari, atau ketika pengguna mengklik "x". Ini sangat berguna karena ia memahami atribut "tambahan".
Sekarang, setelah mengatakan itu, saya tidak yakin apakah Anda dapat mengetahui perbedaan antara mengklik "x" dan mencari, kecuali jika Anda menggunakan hack "onclick". Either way, semoga ini membantu.
sumber
search
acara terjadi selain ketika Anda mengklik 'x'. Tampaknya tidak menyalakeyup
,blur
atau ketika formulir itu dikirimkan. Tetapi ini layak untuk ditandai sebagai jawaban.search
event harus api bila pengguna menekanEnter
. Dan jika kotak pencarian memilikiincremental
atribut, itu juga akan menyala ketika pengguna berhenti mengetik sebentar.input
acara tetapi bukansearch
acara tersebut.Bind
search
-mencegah kotak pencarian seperti yang diberikan di bawah ini-sumber
Saya ingin menambahkan jawaban "terlambat", karena saya berjuang dengan
change
,keyup
dansearch
hari ini, dan mungkin apa yang saya temukan pada akhirnya mungkin berguna bagi orang lain juga. Pada dasarnya, saya memiliki panel search-as-type, dan saya hanya ingin bereaksi dengan baik terhadap pers X kecil (di bawah Chrome dan Opera, FF tidak mengimplementasikannya), dan menghapus panel konten sebagai hasilnya.Saya punya kode ini:
(Mereka terpisah karena saya ingin memeriksa kapan dan dalam keadaan apa masing-masing dipanggil).
Ternyata Chrome dan Firefox bereaksi secara berbeda. Secara khusus, Firefox memperlakukan
change
sebagai "setiap perubahan pada input", sementara Chrome memperlakukannya sebagai "ketika fokus hilang DAN konten berubah". Jadi, di Chrome, fungsi "panel pembaruan" dipanggil sekali, pada FF dua kali untuk setiap penekanan tombol (satu masukkeyup
, satu masukchange
)Selain itu, membersihkan bidang dengan X kecil (yang tidak ada di bawah FF) meluncurkan
search
acara di bawah Chrome: tidakkeyup
, tidakchange
.Kesimpulannya? Gunakan
input
sebaliknya:Ini bekerja dengan perilaku yang sama di bawah semua browser yang saya uji, bereaksi pada setiap perubahan konten input (salin-tempel dengan mouse, pelengkapan otomatis dan "X" termasuk).
sumber
change
acara seperti Chrome, hanya menembak pada Enter atau fokus hilang.Menggunakan tanggapan Pauan, itu sangat mungkin. Ex.
sumber
change
acara ini tidak akan berlangsung sampaiblur
pada dasarnya. Cukup mengklik bagian(x)
dalam bidang pencarian Chrome sepertinya tidak memecat saya. Setelah penyelidikan lebih lanjut (dan membaca komentar di bawah) saya mulaiclick
bekerja untuk saya. Begitu$("input[type='search']").bind('click', function(e) { if ( this.value=="") {//this just cleared!} });
berhasil pada akhir saya$("input[type='search']").bind('click', function(e) { if ( this.value=="") {//this just cleared!} });
juga akan memicu ketika pengguna mengklik ke kolom input.Saya tahu ini adalah pertanyaan lama, tetapi saya mencari hal yang sama. Tentukan kapan 'X' diklik untuk menghapus kotak pencarian. Tidak ada jawaban di sini yang membantu saya sama sekali. Satu dekat tetapi juga terpengaruh ketika pengguna menekan tombol 'enter', itu akan memecat hasil yang sama seperti mengklik 'X'.
Saya menemukan jawaban ini di pos lain dan berfungsi sempurna untuk saya dan hanya menyala saat pengguna menghapus kotak pencarian.
sumber
Masuk akal bagi saya bahwa mengklik X harus dianggap sebagai peristiwa perubahan. Saya sudah menyiapkan semua aktivitas onChange untuk melakukan apa yang saya perlukan. Jadi bagi saya, perbaikannya adalah dengan hanya melakukan baris jQuery ini:
$('#search').click(function(){ $(this).change(); });
sumber
if (this.value === "") { ... }
Sepertinya Anda tidak dapat mengakses ini di browser. Input pencarian adalah pembungkus HTML Webkit untuk Cocoa NSSearchField. Tombol batal tampaknya terkandung dalam kode klien browser tanpa referensi eksternal yang tersedia dari bungkusnya.
Sumber:
Sepertinya Anda harus mengetahuinya melalui posisi mouse di klik dengan sesuatu seperti:
sumber
Menemukan posting ini dan saya menyadari ini agak lama, tetapi saya pikir saya mungkin punya jawaban. Ini menangani klik pada salib, mundur dan menekan tombol ESC. Saya yakin itu mungkin bisa ditulis lebih baik - saya masih relatif baru untuk javascript. Inilah yang akhirnya saya lakukan - Saya menggunakan jQuery (v1.6.4):
sumber
coba ini, semoga membantu anda
sumber
Saya percaya ini adalah satu-satunya jawaban yang menyala HANYA ketika x diklik.
Namun, ini agak sedikit meretas dan jawaban ggutenberg akan bekerja untuk kebanyakan orang.
Di mana
'#search-field'
pemilih jQuery untuk input Anda. Gunakan'input[type=search]'
untuk memilih semua input pencarian. Bekerja dengan memeriksa acara pencarian (jawaban Pauan) segera setelah klik pada bidang.sumber
Solusi Lengkap ada di sini
Ini akan menghapus pencarian ketika pencarian x diklik. atau akan memanggil api pencarian hit ketika pengguna menekan enter. kode ini dapat diperpanjang dengan pencocokan event esc keyup tambahan. tetapi ini harus melakukan semuanya.
Bersulang.
sumber
berdasarkan pada event-loop dari js, tombol
click
on clear akan memicusearch
event pada input , jadi kode di bawah ini akan berfungsi seperti yang diharapkan:Kode di atas, onclick event membukukan
this._cleared = false
loop acara, tapi acara akan selalu berjalan setelah ituonsearch
acara, sehingga Anda secara stabil dapat memeriksathis._cleared
status menentukan apakah pengguna hanya mengklikX
tombol dan kemudian memicuonsearch
peristiwa.Ini dapat bekerja pada hampir semua kondisi , teks yang disisipkan , memiliki atribut tambahan , tekan tombol ENTER / ESC dll.
sumber
Inilah salah satu cara untuk mencapai ini. Anda perlu menambahkan atribut tambahan ke html Anda atau itu tidak akan berfungsi.
sumber
ECMASCRIPT 2016
sumber
Pencarian atau klik berhasil ... tetapi masalah yang saya temukan adalah dengan browser yang lebih lama - pencarian gagal. Banyak plugin (jquery ui autocomplete atau fancytree filter) memiliki blur dan penangan fokus. Menambahkan ini ke kotak input autocomplete bekerja untuk saya (digunakan this.value == "" karena lebih cepat untuk mengevaluasi). Kekaburan lalu fokus menjaga kursor di dalam kotak ketika Anda menekan sedikit 'x'.
PropertyChange dan input berfungsi untuk IE 10 dan IE 8 serta browser lainnya:
Untuk ekstensi filter FancyTree, Anda dapat menggunakan tombol reset dan memaksa acara klik itu sebagai berikut:
Harus dapat mengadaptasi ini untuk sebagian besar kegunaan.
sumber
Pada klik tombol TextField cross (X) onmousemove () dipecat, kita dapat menggunakan acara ini untuk memanggil fungsi apa pun.
sumber