Πώς να δημιουργήσετε ένα Datalist που είναι άμεσα αναζητήσιμο
Οι λίστες με αναπτυξιακούς σκοπούς είναι ένας πολύ καλός τρόπος παρέχοντας επιλογές για ένα πεδίο εισαγωγής, ιδιαίτερα όταν η λίστα των διαθέσιμων επιλογών είναι μεγάλη. Ένας χρήστης μπορεί να επιλέξει την επιλογή που επιθυμεί πληκτρολογώντας στο πεδίο, ή δείτε τις επιλογές που μπορεί να είναι ένας αγώνας για αυτό που ψάχνουν. Να είναι σε θέση να πραγματοποιήσει αναζήτηση μέσω των επιλογών, ωστόσο, είναι η ιδανική λύση.
Αυτή η συμπεριφορά μπορεί να επιτευχθεί με το Το στοιχείο HTML που εμφανίζει προτάσεις εισαγωγής για διαφορετικούς ελέγχους, όπως το
ετικέτα. Ωστόσο
εμφανίζει μόνο τις διαθέσιμες επιλογές όταν ο χρήστης έχει ήδη γράψατε κάτι στο πεδίο εισαγωγής.
Μπορούμε να κάνουμε ένα πεδίο εισόδου πιο χρησιμοποιήσιμο αν επιτρέψουμε στους χρήστες να πρόσβαση στον πλήρη κατάλογο επιλογών οποιαδήποτε στιγμή κατά τη διαδικασία λήψης εισροών.
Σε αυτήν την ανάρτηση, θα δούμε πώς να δημιουργήσετε ένα αναπτυσσόμενη λίστα που μπορεί να αναζητηθεί ανά πάσα στιγμή χρησιμοποιώντας το και
HTML στοιχεία και λίγο JavaScript.
1. Δημιουργήστε ένα Datalist με Επιλογές
Πρώτον, δημιουργούμε ένα datalist για διαφορετικούς συντάκτες κειμένων. Βεβαιωθείτε ότι η τιμή του λίστα
χαρακτηριστικό του ετικέτα είναι το ίδιο με ο
ταυτότητα
απο ετικέτα - έτσι συνδέουμε μεταξύ μας.
2. Κάντε το Datalist Visible
Από προεπιλογή, το Το στοιχείο HTML είναι κεκρυμμένος. Μπορούμε μόνο να το δούμε, όταν εμείς αρχίστε να πληκτρολογείτε μια είσοδο στο πεδίο που συνδέεται με το datalist.
Ωστόσο, υπάρχει ένας τρόπος να "εξαναγκαστεί" το περιεχόμενο του datalist (δηλ. Όλες τις επιλογές του) να εμφανιστεί στην ιστοσελίδα. Χρειαζόμαστε μόνο να την προσφέρουμε απεικόνιση
αξία περιουσίας άλλο από κανένας
, για παράδειγμα εμφάνιση: μπλοκ?
.
datalist εμφάνιση: μπλοκ?
Οι εμφανιζόμενες επιλογές δεν είναι ακόμη επιλεγμένα σε αυτό το σημείο, μόνο το πρόγραμμα περιήγησης κάνει τις επιλογές βρίσκει μέσα στο datalist.
Όπως προαναφέρθηκε, λόγω της ενσωματωμένης συμπεριφοράς του στοιχείο, ένα μέρος των επιλογών εμφανίζεται ήδη και είναι επιλέξιμο, αλλά μόνο όταν ο χρήστης αρχίζει να πληκτρολογεί μια συμβολοσειρά στην οποία μπορεί να χρησιμοποιήσει το πρόγραμμα περιήγησης βρείτε μια επιλογή αντιστοίχισης.
Πρέπει επίσης να βρούμε έναν μηχανισμό όλα (στην παραπάνω εικόνα που εμφανίζεται κάτω από την αναπτυσσόμενη λίστα δεδομένων) επιλέξιμη στο οποιοδήποτε άλλο σημείο της διαδικασίας λήψης εισροών - όταν οι χρήστες θέλουν να ελέγξουν τις επιλογές πριν πληκτρολογήσουν κάτι ή ενώ έχουν ήδη βγάλει κάτι στο πεδίο εισαγωγής.
3. Φέρτε το
Στοιχείο HTML
Υπάρχουν δύο τρόποι για να ενεργοποιήσετε τους χρήστες δείτε και επιλέξτε όλες τις επιλογές όποτε θέλουν:
- Μπορούμε να προσθέσουμε ένα κάντε κλικ στο χειριστή συμβάντων σε κάθε επιλογή και να το χρησιμοποιήσετε για να επιλέξετε μια επιλογή όταν είναι ενεργοποιημένη, ή μπορούμε επίσης μεταμορφώνω τις επιλογές σε μια πραγματική αναπτυσσόμενη λίστα, η οποία, από προεπιλογή, είναι επιλέξιμη.
- Μπορούμε τυλίξτε τις επιλογές του datalist με το
Στοιχείο HTML.
Θα επιλέξουμε τη δεύτερη μέθοδο, καθώς είναι απλούστερη και επιτρέπεται να χρησιμοποιηθεί ως εφεδρικό μηχανισμό σε προγράμματα περιήγησης που δεν υποστηρίζουν το στοιχείο. Όταν ένα πρόγραμμα περιήγησης δεν μπορεί να εμφανίσει και να εμφανίσει το datalist, αυτό κάνει το
στοιχείο με όλες τις επιλογές του αντι αυτου.
Από προεπιλογή, το επιλέγω
Το στοιχείο δεν εμφανίζεται στα προγράμματα περιήγησης που υποστηρίζουν δεδομένα, δηλαδή έως ότου εμείς να αναγκάσει το datalist να καταστήσει το περιεχόμενό του με το εμφάνιση: μπλοκ?
Κανόνα CSS.
Έτσι, όταν εμείς τυλίξτε τις επιλογές από το παραπάνω παράδειγμα (όπου έχει το εμφάνιση: μπλοκ
) με το HTML tag, ο κώδικας φαίνεται παρακάτω:
Προς το δείτε όλες τις επιλογές του επιλέγω
στην αναπτυσσόμενη λίστα, πρέπει να χρησιμοποιήσουμε τα χαρακτηριστικά πολλαπλούς
να εμφανίζονται περισσότερες από μία επιλογές και Μέγεθος
για τον αριθμό των επιλογών που θέλουμε να δείξουμε.
4. Προσθέστε ένα κουμπί αλλαγής
Ο πλήρης αναπτυσσόμενος κατάλογος υποτίθεται ότι εμφανίζεται μόνο όταν ο χρήστης κάνει κλικ σε ένα κουμπί εναλλαγής δίπλα στο πεδίο εισαγωγής, ενώ ο χρήστης πληκτρολογεί τον δελτίο δεδομένων εργασίας που εμφανίζεται. Ας είναι άλλαξε το απεικόνιση
αξία του datalist προς το κανένας
, και επίσης προσθέστε ένα κουμπί δίπλα στο πεδίο εισαγωγής, το οποίο θα αλλάξει απεικόνιση
αξία του datalist, και συνεπώς να ενεργοποιήσει την εμφάνιση του επιλέγω
.
datalist εμφάνιση: κανένας;
Πρέπει επίσης να προσθέσουμε το ακόλουθο κουμπί πάνω από το datalist στο αρχείο HTML:
Τώρα ας δούμε το JavaScript. Πρώτον, ορίζουμε το αρχικές μεταβλητές.
κουμπί = document.querySelector ('κουμπί'); datalist = document.querySelector ('datalist'); επιλέξτε = document.querySelector ('επιλέξτε'); επιλογές = select.options;
Στη συνέχεια, πρέπει να το κάνουμε προσθέστε έναν ακροατή συμβάντων (toggle_ddl
) στο συμβάν κλικ στο κουμπί που θα το κάνει αλλάξτε την εμφάνιση του datalist.
button.addEventListener ('κλικ', toggle_ddl);
Στη συνέχεια, ορίζουμε το toggle_ddl ()
λειτουργία. Για να γίνει αυτό, πρέπει να το πράξουμε ελέγξτε την τιμή του datalist.style.display
ιδιοκτησία. Εάν είναι μια κενή συμβολοσειρά, ο datalist είναι κρυμμένος, οπότε χρειαζόμαστε ορίστε την τιμή του ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ
, και επίσης να αλλάξτε το κουμπί από ένα κάτω βέλος σε ένα βέλος προς τα πάνω.
Λειτουργία toggle_ddl () / * αν το DDL είναι κρυφό * / if (datalist.style.display === ") / * εμφάνιση DDL * / datalist.style.display = 'block';¢Â   "; else hide_select (); λειτουργία hide_select () / * απόκρυψη DDL * / datalist.style.display ="; button.textContent = "âÂ-¼";
ο hide_select ()
λειτουργία κρύβει το datalist με τη ρύθμιση του datalist.style.display
να επιστρέψετε σε μια κενή συμβολοσειρά και να αλλάξετε το βέλος του κουμπιού προς τα κάτω προς τα κάτω.
Στην τελική ρύθμιση, εάν τα πεδία εισαγωγής περιέχουν μια προηγουμένως επιλεγμένη επιλογή και η αναπτυσσόμενη λίστα έχει επίσης ενεργοποιηθεί από ένα μεταγενέστερο κλικ του κουμπιού, η επιλογή που επιλέξατε πριν πρέπει να εμφανίζεται ως επιλεγμένο στην αναπτυσσόμενη λίστα.
Έτσι, ας προσθέσουμε τον ακόλουθο επισημασμένο κώδικα στο toggle_ddl ()
λειτουργία:
Λειτουργία toggle_ddl () / * αν το DDL είναι κρυφό * / if (datalist.style.display === ") / * εμφάνιση DDL * / datalist.style.display = 'block';¢(Var i = 0, iΘέλουμε επίσης να αποκρύψουμε την αναπτυσσόμενη λίστα όταν ο χρήστης πληκτρολογεί στο πεδίο εισαγωγής (τη στιγμή που θα εμφανιστεί ο δελτίο δεδομένων εργασίας).
/ * όταν ο χρήστης θέλει να πληκτρολογήσει στο πεδίο κειμένου, αποκρύπτει DDL * / input = document.querySelector ('είσοδος')? input.addEventListener ('εστίαση', hide_select);5. Ενημερώστε την εισαγωγή όταν είναι επιλεγμένη μια επιλογή
Τέλος, ας είναι πρόσθεσε ένα
αλλαγή
χειριστής συμβάντων στοετικέτα, έτσι ώστε όταν ο χρήστης επιλέξει μια επιλογή από την αναπτυσσόμενη λίστα, η τιμή του θα εμφανιστεί μέσα στο
τομέα.
/ * όταν ο χρήστης επιλέγει μια επιλογή από το DDL, γράψτε το στο πεδίο κειμένου * / select.addEventListener ('change', fill_input). συνάρτηση fill_input () input.value = επιλογές [this.selectedIndex] .value; hide_select ();Μειονεκτήματα
Το κύριο μειονέκτημα αυτής της τεχνικής είναι το απουσία ενός άμεσου τρόπου για το στυλ του
στοιχείο με CSS (η εμφάνιση του
και
οι ετικέτες διαφέρουν από διαφορετικά προγράμματα περιήγησης).
Επίσης, στον Firefox, το κείμενο εισαγωγής αντιστοιχεί στις επιλογές που έχουν περιέχει τους χαρακτήρες εισόδου, ενώ άλλα προγράμματα περιήγησης αντιστοιχούν στις επιλογές ξεκινάω με αυτούς τους χαρακτήρες. Το spec του W3C για το datalist δεν καθορίζει ρητά τον τρόπο με τον οποίο πρέπει να γίνει η αντιστοίχιση.
Εκτός από αυτό, αυτή η μέθοδος είναι καλή και λειτουργεί σε όλα τα μεγάλα προγράμματα περιήγησης, ενώ στα προγράμματα περιήγησης όπου μπορεί να μην λειτουργήσει, οι χρήστες μπορούν ακόμη να δουν την αναπτυσσόμενη λίστα, μόνο οι προτάσεις δεν θα εμφανιστούν.
Δείτε το τελικό demo με ένα κομμάτι CSS styling παρακάτω: