Bagaimana cara menghapus / mengubah teks JQuery UI Autocomplete Helper?

94

Tampaknya ini adalah fitur baru di JQuery UI 1.9.0, karena saya sering menggunakan JQuery UI sebelumnya dan teks ini tidak pernah muncul.

Tidak dapat menemukan apa pun yang terkait dengan dokumentasi API.

Jadi, menggunakan contoh pelengkapan otomatis dasar dengan sumber lokal

$( "#find-subj" ).autocomplete({
    source: availableTags
});

Saat pencarian cocok, teks pembantu terkait ini akan ditampilkan:

'1 hasil tersedia, gunakan tombol panah atas dan bawah untuk menavigasi.'

Bagaimana saya bisa menonaktifkannya dengan cara yang baik, bukan dengan menghapusnya dengan pemilih JQuery.

pengguna1236048
sumber
1
di browser mana Anda melihat ini? apakah Anda dapat melihat dialog yang sama di situs web jquery ui
fuzionpro
2
Saya belum pernah melihat ini, dapatkah Anda memberikan fiddler atau kode tambahan agar kami dapat memeriksanya lebih lanjut?
zmanc
1
bagi saya masalahnya adalah posisi itu: relatif, telah diganti untuk rentang yang menampilkan barang aksesibilitas ... Saya baru saja menambahkan "! penting" dan sekarang saya dapat mempertahankan aksesibilitasnya
iKode
Keraguan Anda menyelamatkan waktu saya. Karenanya +1 untuk Anda :-)
Ashok kumar

Jawaban:

151

Saya tahu ini telah terjawab tetapi hanya ingin memberikan contoh implementasi:

var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C++"
    ];

$("#find-subj").autocomplete({
    source: availableTags,
    messages: {
        noResults: 'no results',
        results: function(amount) {
            return amount + 'results.'
        }
    }
});
TK123
sumber
4
Saya mencoba ini dan menempatkan string "null" di tempat yang sama. Solusinya adalah mengubah ke: noResults: '', dan Anda tidak akan mendapatkan pesan sama sekali.
Patrick
2
Bekerja untuk saya tanpa hasil: ''. Bertanya-tanya mengapa itu tidak didokumentasikan di api.jqueryui.com
Niels Steenbeek
Tidak yakin apa source: availableTags? Saya menghapusnya dan saya masih tidak memiliki pesan.
Chuck Le Butt
3
@Django Reinhardt yang baru saja disalin dari contoh di pertanyaan OP. Sumber menentukan dari mana data pelengkapan otomatis berasal. Misalnya availableTagsbisa menjadi variabel lokal yang berisi objek JSON dari url ke pemetaan kata. [{ '/tag/cats': 'Cats', etc... }]Jadi ketika pengguna jenis CaKucing akan muncul di dropdown dan ketika dipilih atau diklik itu dapat mengisi bidang tersembunyi dengan url misalnya.
TK123
1
Terima kasih banyak. Tidak dapat menemukannya di Dokumentasi API.
Chorinator
86

Ini digunakan untuk aksesibilitas, cara mudah untuk menyembunyikannya adalah dengan CSS:

.ui-helper-hidden-accessible { display:none; }

Atau (lihat komentar Daniel di bawah)

.ui-helper-hidden-accessible { position: absolute; left:-999em; }
Bertrand
sumber
5
Seperti yang Anda katakan, ini digunakan untuk aksesibilitas sehingga orang dengan pembaca layar dapat memahami widget dengan lebih baik. Dengan menggunakan display: none; Anda juga menyembunyikannya dari pembaca layar. Lebih baik memindahkannya dari layar dengan posisi: absolte; kiri: -999em;
Daniel Göransson
Alih-alih left: -9999px, Anda juga dapat menggunakan left: 200%(200% vs. 100% hanya untuk memperhitungkan kemungkinan kebiasaan peramban di mana 100% tidak cukup menariknya dari layar).
jbyrd
23

Jawaban teratas di sini mencapai efek visual yang diinginkan, tetapi mengalahkan objek jQuery yang memiliki dukungan ARIA, dan agak menjijikkan bagi pengguna yang mengandalkannya! Mereka yang telah menyebutkan bahwa jQuery CSS menyembunyikan ini untuk Anda benar, dan inilah gaya yang melakukannya:

.ui-helper-hidden-accessible {
    border: 0;
    clip: rect(0 0 0 0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
}

Salin itu ke stylesheet Anda alih-alih menghapus pesannya, silakan :).

Mike Campbell
sumber
1
Pembaruan 2019: jangan gunakan clipproperti, karena sekarang sudah tidak digunakan lagi - lihat developer.mozilla.org/en-US/docs/Web/CSS/clip
jbyrd
17

Menurut blog ini :

Kami sekarang menggunakan wilayah langsung ARIA untuk mengumumkan kapan hasil tersedia dan cara menavigasi melalui daftar saran. Pengumuman dapat dikonfigurasi melalui opsi pesan, yang memiliki dua properti: noResults saat tidak ada item yang dikembalikan dan hasil saat setidaknya satu item dikembalikan. Secara umum, Anda hanya perlu mengubah opsi ini jika Anda ingin string ditulis dalam bahasa yang berbeda. Opsi pesan dapat berubah di versi mendatang sementara kami mengerjakan solusi lengkap untuk manipulasi string dan internasionalisasi di semua plugin. Jika Anda tertarik dengan opsi pesan, kami mendorong Anda untuk membaca sumbernya saja; kode yang relevan ada di bagian paling bawah plugin pelengkapan otomatis dan hanya beberapa baris.

...

Jadi, bagaimana penerapannya pada widget pelengkapan otomatis? Nah, sekarang ketika Anda mencari item, jika Anda memiliki pembaca layar yang terpasang, itu akan membaca Anda sesuatu seperti "1 hasil tersedia, gunakan tombol panah atas dan bawah untuk menavigasi.". Cukup keren, ya?

Jadi jika Anda pergi ke github dan melihat kode sumber pelengkapan otomatis , sekitar baris 571 Anda akan melihat di mana ini sebenarnya diterapkan.

j08691
sumber
11

Menambahkan css jquery juga berfungsi untuk menghapus teks instruksional.

<link
 rel="stylesheet"
 href="http://code.jquery.com/ui/1.9.0/themes/smoothness/jquery-ui.css" />
pengguna2708344
sumber
Bekerja untuk saya juga.
Indika K
4

Karena ini ada di sana untuk alasan aksesibilitas, mungkin yang terbaik adalah menyembunyikannya dengan CSS.

Namun, saya menyarankan:

.ui-helper-hidden-accessible { position: absolute; left: -9999px; }

Daripada:

.ui-helper-hidden-accessible { display:none; }

Karena yang pertama akan menyembunyikan item di luar layar, tetapi masih memungkinkan pembaca layar untuk membacanya, sedangkan display:nonetidak.

Neil Sayers
sumber
Alih-alih left: -9999px, cukup gunakan left: 200%(200% vs. 100% hanya untuk memperhitungkan kemungkinan kebiasaan peramban di mana 100% tidak cukup menariknya dari layar).
jbyrd
2

Nah, pertanyaan ini sedikit lebih lama, tetapi teks tidak muncul sama sekali ketika Anda menyertakan file css yang sesuai:

<link
 rel="stylesheet"
 href="http://code.jquery.com/ui/1.9.0/themes/YOUR_THEME_HERE/jquery-ui.css" />

Tentu saja Anda harus memasukkan tema sebenarnya, bukan YOUR_THEME_HEREmisalnya "kehalusan"

Markus W Mahlberg
sumber
1

Beri gaya bagaimana tema jQuery itu sendiri menatanya. Banyak dari jawaban lain menyarankan untuk menyertakan seluruh stylesheet, tetapi jika Anda hanya menginginkan CSS yang relevan, begini caranya http://code.jquery.com/ui/1.9.0/themes/smoothness/jquery-ui.css:

.ui-helper-hidden-accessible { 
    position: absolute !important; 
    clip: rect(1px 1px 1px 1px); 
    clip: rect(1px,1px,1px,1px);
}
dKen
sumber
1

Menambahkan kode ini tepat setelah pelengkapan otomatis di skrip Anda akan membuat helper yang mengganggu keluar dari halaman, tetapi orang yang menggunakan pembaca layar masih akan mendapatkan keuntungan darinya:

$(document).ready(function() { //pushing the autocomplete helper out of the visible page
    $(".ui-helper-hidden-accessible").css({"position": "absolute", "left":"-999em"}) //{"display","none"} will remove the element from the page
});

Saya bukan penggemar memanipulasi CSS dengan JS tetapi dalam hal ini saya pikir itu masuk akal. Kode JS menciptakan masalah di tempat pertama, dan masalah akan diselesaikan beberapa baris di bawah ini dalam file yang sama. IMO ini lebih baik daripada menyelesaikan masalah dalam file CSS terpisah yang mungkin diedit oleh orang lain yang tidak tahu mengapa kelas .ui-helper-hidden-dapat diakses dimodifikasi seperti itu.

Bruno 82
sumber
1
Saya telah mencari selamanya untuk mencoba menyelesaikan masalah ini dan solusi Anda berhasil.
Timothy G.
Alih-alih left: -9999px, cukup gunakan left: 200%(200% vs. 100% hanya untuk memperhitungkan kemungkinan kebiasaan peramban di mana 100% tidak cukup menariknya dari layar).
jbyrd
0

CSS jQuery .ui-helper-hidden-diakses ada di file themes / base / core.css. Anda harus menyertakan file ini (minimal) di stylesheet Anda untuk kompatibilitas ke depan.

paulz
sumber