سلام! من به عنوان یک تأمین کننده جعبه لیست ، من سهم منصفانه ای از تجربیات خود را در مورد انواع مسائل مربوط به جعبه های لیست داشتم. یکی از مشکلات متداول که کاربران اغلب با آن روبرو هستند ، استفاده از رویدادهای صفحه کلید در یک جعبه لیست است. در این پست وبلاگ ، برخی از نکات و ترفندها را در مورد نحوه رسیدگی به رویدادهای صفحه کلید در یک جعبه لیست به طور مؤثر به اشتراک می گذارم.
اول از همه ، بیایید درک کنیم که چرا رسیدگی به رویدادهای صفحه کلید در یک جعبه لیست مهم است. در بسیاری از برنامه ها ، از جعبه های لیست برای نمایش لیستی از موارد استفاده می شود و کاربران باید با استفاده از صفحه کلید بتوانند از طریق این موارد حرکت کنند. به عنوان مثال ، آنها ممکن است بخواهند از کلیدهای پیکان بالا و پایین برای انتخاب موارد مختلف یا کلید Enter برای انجام یک عمل در مورد انتخاب شده استفاده کنند. بدون رسیدگی به رویداد صفحه کلید مناسب ، تجربه کاربر می تواند واقعاً ناامید کننده باشد.
رسیدگی به رویداد اصلی صفحه کلید
ابتدایی ترین رویدادهای صفحه کلید که می خواهید برای یک جعبه لیست از آن استفاده کنید ، رویدادهای Arrow Key (بالا و پایین) و رویداد Enter Key هستند. بیایید با رویدادهای کلیدی Arrow شروع کنیم.
هنگامی که کاربر کلید Arrow Arrow را فشار می دهد ، می خواهید انتخاب را به عنوان یک مورد در کادر لیست منتقل کنید. به همین ترتیب ، هنگامی که آنها کلید Arrow Down را فشار می دهند ، می خواهید انتخاب را به پایین یک مورد منتقل کنید. در اینجا یک مثال ساده از چگونگی دستیابی به این هدف در JavaScript آورده شده است:
const listbox = document.getElementById ('myListbox') ؛ listbox.addeventlistener ('keydown' ، تابع (رویداد) {if (event.key === 'فلش ") {const selectIndIndEx = listIndIndIndIndEndex ؛ if (selectedIndEx> 0) {listex.selectedIndex = 1 ؛}}} other (event.keseleseleld =======' .
در این کد ، ابتدا با استفاده از شناسه آن به عنصر کادر لیست مراجعه می کنیم. سپس ما اضافه می کنیمکلیدیشنونده رویداد به کادر لیست. در داخل شنونده رویداد ، ما بررسی می کنیم که آیا کلید فشار داده شده ، کلید فلش بالا یا پایین است یا خیر. اگر این کلید up Arrow باشد و یک مورد بالاتر از مورد انتخاب شده در حال حاضر وجود داشته باشد ، ما انتخاب را به سمت بالا حرکت می دهیم. اگر این کلید فلش پایین است و یک مورد در زیر مورد انتخاب شده در حال حاضر وجود دارد ، انتخاب را به پایین حرکت می دهیم.
حال ، بیایید در مورد رویداد Key Enter صحبت کنیم. هنگامی که کاربر در حالی که یک مورد در کادر لیست انتخاب شده است ، کلید Enter را فشار می دهد ، ممکن است بخواهید برخی از اقدامات را انجام دهید ، مانند باز کردن یک نمای دقیق از مورد انتخاب شده یا انجام یک جستجو بر اساس مقدار انتخاب شده. در اینجا چگونه می توانید رویداد کلید Enter را اداره کنید:
listbox.addeventlistener ('keydown' ، تابع (رویداد) {if (event.key === 'enter') {const selectIndEx = listex.selectedIndex ؛ const SelectedSex ؛ const selectValue = listIndex.options] .value ؛ // انجام برخی از اقدامات با انتخاب ارزش انتخاب شده Console.log (انتخاب شده) ؛
در این کد ، ما دوباره a اضافه می کنیمکلیدیشنونده رویداد به کادر لیست. در داخل شنونده رویداد ، ما بررسی می کنیم که آیا کلید فشار داده شده کلید Enter است یا خیر. اگر اینطور باشد ، ما شاخص مورد انتخاب شده را دریافت می کنیم و سپس مقدار آن مورد را دریافت می کنیم. سپس می توانید از این مقدار برای انجام هر عملی که نیاز دارید استفاده کنید.


رسیدگی به رویداد صفحه کلید پیشرفته
علاوه بر کلید اصلی فلش و ورود به رویدادهای کلیدی ، برخی از رویدادهای صفحه کلید دیگر نیز وجود دارد که ممکن است بخواهید برای یک تجربه کاربر پیشرفته تر از آن استفاده کنید. به عنوان مثال ، ممکن است بخواهید کلیدهای صفحه را به سمت بالا و صفحه پایین برسانید تا به کاربر اجازه دهید به سرعت از طریق کادر لیست حرکت کند.
در اینجا چگونه می توانید صفحه و صفحه پایین صفحه را کنترل کنید:
listBox.addEventListener('keydown', function(event) { if (event.key === 'PageUp') { const visibleItems = 10; // Number of visible items in the list box const selectedIndex = listBox.selectedIndex; if (selectedIndex >= visibleItems) { listBox.selectedIndex = selectedIndex - visibleItems; } else { Listbox.SelectedIndex =}} other if (Event.Key === 'pagediled) {const visibleitems = 10 ؛ listbox.SelectedIndex = listbox.options.l طول - 1 ؛
در این کد ، ما اضافه می کنیمکلیدیشنونده رویداد به کادر لیست و بررسی اینکه آیا کلید فشار داده شده صفحه بالا یا صفحه پایین صفحه است. اگر این صفحه کلید Up است ، ما انتخاب را با تعداد موارد قابل مشاهده در کادر لیست حرکت می دهیم. اگر این صفحه پایین صفحه است ، ما انتخاب را با تعداد موارد قابل مشاهده حرکت می دهیم.
دست زدن به میانبرهای صفحه کلید دیگر
همچنین ممکن است بخواهید برخی از میانبرهای صفحه کلید سفارشی را برای کادر لیست خود پیاده سازی کنید. به عنوان مثال ، شما می توانید به کاربر اجازه دهید با فشار دادن کلید Home و آخرین مورد با فشار دادن کلید End ، اولین مورد را در لیست انتخاب کند.
در اینجا نحوه رسیدگی به کلیدهای خانه و پایان آمده است:
listbox.addeventlistener ('keydown' ، تابع (رویداد) {if (event.key == 'home') {listbox.selectedIndex = 0 ؛} other if (event.key === 'end') {listbox.selectedIndex = listbox.options.l طول - 1 ؛}}) ؛
در این کد ، ما اضافه می کنیمکلیدیشنونده رویداد به کادر لیست و بررسی اینکه آیا کلید تحت فشار قرار گرفته است ، کلید خانه یا پایان است. اگر این کلید خانه است ، ما شاخص انتخاب شده را روی 0 تنظیم می کنیم که اولین مورد را در لیست انتخاب می کند. اگر این کلید پایان است ، ما شاخص انتخاب شده را روی آخرین مورد در لیست تنظیم می کنیم.
ادغام با سایر مؤلفه ها
بعضی اوقات ، ممکن است بخواهید کادر لیست را با سایر اجزای موجود در صفحه خود بر اساس رویدادهای صفحه کلید ادغام کنید. به عنوان مثال ، شما می توانید یک قسمت ورودی متن داشته باشید که در آن کاربر می تواند یک اصطلاح جستجو را تایپ کند ، و هنگامی که Enter را فشار می دهد در حالی که کادر لیست دارای تمرکز است ، شما با استفاده از مورد انتخاب شده در کادر لیست و متن در قسمت ورودی ، جستجو را انجام می دهید.
در اینجا مثالی از چگونگی دستیابی به این هدف آورده شده است:
<input type = "text" id = "searchInput"> <select id = "mylistbox"> <گزینه مقدار = "گزینه 1"> گزینه 1 </oction> <option value = "option2"> گزینه 2 </oction> <option value = "گزینه 3"> گزینه 3 </ocation> </eact> </ection> </eact>
const listbox = document.getElementById ('myListbox') ؛ const searchInput = document.getElementById ('searchInput') ؛ listbox.addeventlistener ('keydown' ، تابع (رویداد) {if (event.key === 'enter') {const selectIndEx = listex.selectedIndex ؛ const SelectedValue = listIndex.options [selectIndex] .Value ؛ const searchInput.Value ؛ جستجو) ؛
در این کد ، ابتدا به کادر لیست و قسمت ورودی جستجو مراجعه می کنیم. سپس ما اضافه می کنیمکلیدیشنونده رویداد به کادر لیست. وقتی کاربر کلید Enter را فشار می دهد ، مقدار انتخاب شده را از کادر لیست و متن از قسمت ورودی جستجو دریافت می کنیم و سپس می توانیم از این مقادیر برای انجام یک جستجو استفاده کنیم.
با استفاده از کتابخانه های سوم - حزب
اگر نمی خواهید تمام کد مدیریت رویداد صفحه کلید را از ابتدا بنویسید ، برخی از کتابخانه های شخص ثالث وجود دارند که می توانند به شما کمک کنند. به عنوان مثال ، jQuery عملکردهای مفیدی برای رسیدگی به رویدادها از جمله رویدادهای صفحه کلید دارد.
در اینجا نحوه استفاده از jQuery برای رسیدگی به کلید پیکان و وارد کردن رویدادهای کلیدی آورده شده است:
<! doctype html> <html> <head> <script src = "https://code.jquery.com/jquery-3.6.0.min.js"> </script> </head> <sead> <sead> <sech> <انتخاب id = "myListbox"> گزینه <COTTENTY = "OPTIOND =" OPTIOND1 "> <COTTENTIONCOBOX"> Value = "Option3"> گزینه 3 </oction> </led> <script> $ ('#myListbox'). keydown (عملکرد (رویداد) {if (event.key === 'Arrowup') {const rechedIndex = $ (this) .prop ('SelectedIndex') ؛ if (SelectedIndEx> 0) releddex} redpop (this). اگر (Event.Key === 'Arrowdown') {const selectIndex = $ (این). $ (این) </cript> </body> </hml>
در این کد ، ابتدا کتابخانه jQuery را در پرونده HTML خود قرار می دهیم. سپس از jQuery برای انتخاب کادر لیست و اضافه کردن a استفاده می کنیمکلیدیشنونده رویداد به آن. در داخل شنونده رویداد ، ما کلید پیکان را اداره می کنیم و به روشی مشابه همانطور که در نمونه های وانیل جاوا اسکریپت انجام دادیم ، رویدادهای کلیدی را وارد می کنیم.
پایان
رسیدگی به رویدادهای صفحه کلید در یک کادر لیست بخش مهمی از ارائه یک تجربه خوب کاربر است. با استفاده از رویدادهای اساسی مانند Arrow Keys و Enter Enter Key ، و همچنین رویدادهای پیشرفته تری مانند صفحه بالا ، صفحه پایین ، خانه و کلیدها ، می توانید جعبه لیست خود را بیشتر کاربر کنید. همچنین می توانید کادر لیست را با سایر مؤلفه های موجود در صفحه خود ادغام کنید و از کتابخانه های شخص ثالث برای ساده سازی روند توسعه استفاده کنید.
اگر در بازار جعبه های لیست با کیفیت بالا هستید ، ما برای کمک به اینجا هستیم! ما طیف گسترده ای از محصولات جعبه لیست را ارائه می دهیم که برای پاسخگویی به نیازهای خاص شما طراحی شده اند. این که آیا شما به یک جعبه لیست ساده برای یک پروژه کوچک یا یک برنامه پیچیده تر برای یک برنامه در مقیاس بزرگ نیاز دارید ، ما شما را تحت پوشش قرار داده ایم.
اگر علاقه مند هستیدگیره سنسوربامورد آب اولتراسونیک، یابدنه، ما همچنین می توانیم محصولات و راه حل های مرتبط را ارائه دهیم.
اگر می خواهید در مورد نیازهای خود بحث کنید یا نقل قول کنید ، دریغ نکنید که به ما دسترسی پیدا کنید. ما مشتاقانه منتظر همکاری با شما هستیم و به شما در یافتن جعبه لیست مناسب برای پروژه خود کمک می کنیم.
منابع
- مستندات JavaScript در اسناد وب MDN
- اسناد رسمی jQuery
