כיצד ליצור דטליסט זה מיידי
רשימות נפתח הם דרך מסודרת מתן אופציות עבור שדה קלט, במיוחד כאשר רשימת האפשרויות הזמינות הן ארוכות. משתמש יכול לבחור את האפשרות הרצויה הקלדת שדה, או להסתכל על האפשרויות זה עשוי להיות התאמה למה שהם מחפשים. להיות מסוגל לחפש את האפשרויות, עם זאת, הוא הפתרון האידיאלי.
התנהגות זו יכולה להיות מושגת עם רכיב HTML זה מציג הצעות קלט עבור בקרות שונות, כגון
תג. למרות זאת
מציג רק את האפשרויות הזמינות כאשר יש למשתמש כבר הקלדת משהו לתוך שדה הקלט.
אנחנו יכולים להפוך שדה קלט יותר שמיש אם אנו מאפשרים למשתמשים לגשת לרשימה המלאה של האפשרויות בכל עת במהלך תהליך הקלט.
פוסט זה, אנחנו הולכים לראות כיצד ליצור רשימה ניתנת לחיפוש בכל עת משתמש ב ו
רכיבי HTML ו- JavaScript קטן.
1. יצירת דטליסט עם אפשרויות
ראשית, אנו יוצרים datalist עבור עורכי טקסט שונים. ודא כי הערך של רשימה
תכונה של תג הוא זהה ה
id
של ה תג - כך אנחנו לאגד אותם אחד לשני.
2. הפוך את Datalist Visible
כברירת מחדל, רכיב HTML הוא מוסתר. אנחנו יכולים לראות את זה רק כשאנחנו התחל להקליד קלט לתוך השדה שמלווה אותו דטליסט.
עם זאת יש דרך "להכריח" את התוכן של datalist (כלומר כל האפשרויות שלה) כדי להופיע בדף האינטרנט. אנחנו רק צריכים לתת לו מתאים להציג
ערך הנכס חוץ מ אף אחד
, לדוגמה בלוק תצוגה;
.
datalist display: block;
האפשרויות המוצגות עדיין לא ניתן לבחור בשלב זה, הדפדפן בלבד מעבד את האפשרויות הוא מוצא בתוך datalist.
כאמור, בשל ההתנהגות המובנית של אלמנט, חלק מהאפשרויות כבר מופיעות וניתנות לבחירה, אבל רק כאשר המשתמש מתחיל להקליד מחרוזת שבה הדפדפן יכול מצא אפשרות התאמה.
אנחנו גם צריכים למצוא מנגנון לעשות את כל אפשרויות (על המסך הנ"ל מוצג תחת datalist הנפתח) ניתן לבחור ב כל נקודה אחרת של תהליך הקלט - כאשר משתמשים רוצים לבדוק את האפשרויות לפני שהם סוג משהו, או בזמן שהם כבר לקחו משהו לתוך שדה קלט.
3. להביא את
אלמנט HTML
יש שתי דרכים לאפשר למשתמשים לעשות זאת לראות ולבחור את כל האפשרויות מתי שהם רוצים:
- אנחנו יכולים להוסיף לחץ על אירוע המטפל - - לכל אפשרות, ולהשתמש בו כדי לבחור אפשרות כאשר הוא לוחץ על, או שאנחנו יכולים גם שינוי צורה האפשרויות לתוך רשימה נפתחת אמיתית, אשר, כברירת מחדל, ניתן לבחור.
- אנחנו יכולים לעטוף את האפשרויות של הדטליסט עם ה
אלמנט HTML.
אנו נבחר את השיטה השנייה, כפי שהיא פשוטה יותר, וניתן להשתמש בה כמנגנון דחייה בדפדפנים שאינם תומכים אלמנט. כאשר דפדפן לא יכול להציג & להציג את datalist, זה מעבד את
עם כל האפשרויות שלה במקום זאת.
כברירת מחדל, בחר
אלמנט אינו מופיע בדפדפנים שעושים תמיכה ב- datalist, כלומר, עד שאנחנו לאלץ את הדטליסט למסור את תוכנו עם ה בלוק תצוגה;
כלל CSS.
אז, כאשר אנחנו לעטוף את האפשרויות מהדוגמה לעיל (שם datalist יש בלוק תצוגה
) עם ה תג HTML, הקוד נראה כמו למטה:
ל ראה את כל האפשרויות of בחר
ברשימה הנפתחת, אנחנו צריכים להשתמש בתכונות מרובים
כדי להציג יותר מאפשרויות אחת, ו גודל
עבור מספר האפשרויות שאנו רוצים להציג.
4. הוסף לחצן מתג
הרשימה הנפתחת המלאה אמורה להופיע רק כאשר המשתמש לחיצה על כפתור ליד שדה הקלט, בזמן שהמשתמש מקליד את דטליסט העבודה מוצג. ללא שם: בואו לשנות את ה להציג
ערך של datalist ל אף אחד
, וגם להוסיף כפתור ליד שדה קלט, אשר יהיה לעבור את להציג
ערך של datalist, וכתוצאה מכך להפעיל את המראה של בחר
.
datalist display: none;
אנחנו גם צריכים להוסיף את הלחצן הבא מעל datalist בקובץ HTML:
עכשיו בואו לראות את JavaScript. ראשית, אנו מגדירים את - משתנים ראשוניים.
button = document.querySelector ('לחצן'); datalist = document.querySelector ('datalist'); בחר = document.querySelector ('בחר'); אפשרויות = select.options;
הבא, אנחנו צריכים הוסף מאזין אירועים (toggle_ddl
) לאירוע קליק של הכפתור אשר יהיה לעבור את המראה של datalist.
button.addEventListener ('לחץ', toggle_ddl);
לאחר מכן, אנו מגדירים את toggle_ddl ()
פונקציה. כדי לעשות זאת, אנחנו צריכים לבדוק את הערך של datalist.style.display
נכס. אם זה מחרוזת ריקה, דטליסט מוסתר, אז אנחנו צריכים להגדיר את הערך שלה בלוק
, וגם לשנות את הכפתור מחץ מצביע למטה ועד חץ המצביע למעלה.
הפונקציה toggle_ddl () / * אם DDL מוסתר * / אם (datalist.style.display === ") / * הצג DDL * / datalist.style.display = 'block'; this.textContent =" ד¢Â-² "; אחר hide_select (); function hide_select () / * הסתר DDL * / datalist.style.display ="; button.textContent = "ד¢Â ¼";
ה hide_select ()
פונקציה מסתיר את datalist על ידי הגדרת datalist.style.display
רכוש בחזרה מחרוזת ריקה, ולשנות את החץ כפתור חזרה למטה כלפי מטה.
בתצורה הסופית, אם שדות הקלט מחזיקים אפשרות שנבחרה קודם לכן והרשימה הנפתחת הופעלה גם על ידי לחיצה על לחצן מאוחר יותר, האפשרות שנבחרה מראש previoulsy צריך להיות מוצג כפי שנבחר ברשימה הנפתחת.
אז, בואו להוסיף את הקוד הבא מודגש toggle_ddl ()
פונק
הפונקציה toggle_ddl () / * אם DDL מוסתר * / אם (datalist.style.display === ") / * הצג DDL * / datalist.style.display = 'block'; this.textContent =" ד¢Â ² "; var val = input.value, עבור (var i = 0; iכמו כן, אנו רוצים להסתיר את הרשימה הנפתחת כאשר המשתמש מקליד את שדה הקלט (בזמן שהדיליסט עובד יופיע).
/ * כאשר המשתמש רוצה להקליד לתוך שדה טקסט, להסתיר DDL * / input = document.querySelector ('קלט'); input.addEventListener ('מיקוד', hide_select);.5 עדכן קלט כאשר אפשרות נבחרת
לבסוף, בואו הוסף
שינוי
מנהל אירועים אל ה, כך שכאשר המשתמש בוחר אפשרות מהרשימה הנפתחת, הערך שלה יוצג בתוך
גם בתחום.
/ * כאשר המשתמש בוחר אפשרות מ DDL, לכתוב את זה לשדה הטקסט * / select.addEventListener ("שינוי", מילוי); function_input () input.value = options [this.selectedIndex]. hide_select ();חסרונות
החיסרון העיקרי של טכניקה זו היא העדר דרך ישירה לסגנון
אלמנט עם CSS (המראה של
ו
תגים משתנים בין דפדפנים שונים).
כמו כן, ב- Firefox, טקסט הקלט מותאם לאפשרויות מכיל את תווי הקלט, בעוד שדפדפנים אחרים מתאימים את האפשרויות התחל עם אלה תווים. מפרט ה- W3C עבור datalist אינו מציין במפורש כיצד יש לבצע את ההתאמה.
חוץ מזה, שיטה זו היא טובה עובד בכל הדפדפנים העיקריים, ואילו בדפדפנים שבהם הם עשויים שלא לפעול, המשתמשים עדיין יכולים לראות את הרשימה הנפתחת, אך ההצעות לא יופיעו.
בדוק את ההדגמה האחרונה עם קצת CSS סגנון להלן: