ایجاد لیست کشویی (drop-down) وابسته به هم در HTML


نویسنده:
چهارشنبه 11 مهر 1397
لیست کشویی

در این مقاله قصد داریم یکی از مطالب بسیار مهم و کاربردی یعنی ایجاد لیست کشویی وابسته به هم در HTML که مربوط به مباحث برنامه نویسی سمت کاربر می‌شود را آموزش دهیم که بنده در سایت‌های فارسی، آموزش کاملی در این مورد پیدا نکردم.

ایجاد لیست کشویی وابسته به هم در HTML

خب حتماً در بسیاری از سایت‌ها (خصوصاً سایت‌های سازمانی) مشاهده کرده‌اید که چندین لیست کشویی، به هم وابسته هستند. برای مثال می‌توان به انتخاب استان و شهر اشاره کرد. اگر دقت کرده باشید در این مدل انتخاب‌ها چندین لیست کشویی (drop-down) که ما در زبان html با تگ select آنها را پیاده سازی می‌کنیم، وجود دارد که گزینه (option) آنها به انتخاب قبلی شما بستگی دارد.

نکته: در این مقاله هر جا گفته شد “لیست کشویی” بدانید که منظور همان drop-down در html است که با تگ select پیاده سازی می‌شود.

اگر در مورد همان انتخاب استان و شهر دقت کنیم، متوجه خواهیم شد که ابتدا باید استان موردنظر را از لیست کشویی اول انتخاب کنیم، و بعد شهرها در لیست کشویی دوم فعال می‌شوند و می‌توانیم شهر موردنظر هم انتخاب کنیم. (یعنی گزینه های لیست کشویی دوم که شهرها هستند به لیست کشویی اول که انتخاب استان است بستگی دارد، یا به عبارت دیگر وابسته است)

حالا سؤال اینجاست که این انتخاب‌ها چگونه کار می‌کنند و پیاده سازی می‌شوند؟ طبیعتاً از زبان html برای ایجاد لیست‌های کشویی مدنظرمان استفاده می‌کنیم (با استفاده از تگ select). سپس با استفاده از زبان شیرین جاوا اسکریپت تشخیص می‌دهیم که انتخاب اول کاربر چه گزینه‌ای هست و گزینه‌های مربوطه را در لیست کشویی بعدی ظاهر می‌کنیم.

خیلی نگران نباشید چون سعی کرده‌ایم به ساده‌ترین شکل ممکن کدها را نوشته و خط به خط توضیح دهیم (به غیر از اینکه در قسمت نظرات همین پست برای رفع مشکلات در خدمت شما هستیم!).

ایجاد select های وابسته به هم در HTML

توجه: در مثال زیر ما دو لیست کشویی داریم که در اولی سه مقدار Volvo، Volkswagen و BMW را قرار دادیم و کاربر وقتی هرکدام از این گزینه‌ها را انتخاب کند در لیست کشویی دوم چندین مدل از خودرو‌های آن شرکت ظاهر میشود.

قدم اول: ابتدا لیست های کشویی را مطابق کد زیر ایجاد می‌کنیم، دقت داشته باشید که فقط در select اول گزینه (option) وجود دارد و قرار است که در select دوم بسته به انتخاب شما در select اول گزینه‌ها بارگذاری شوند.

نکته: در select اول یک خصیصه به نام onchange وجود دارد که در واقع وقتی که کاربر گزینه‌ای را انتخاب می‌کند تابع درونش یعنی ()ChangeCarList که یک تابع جاوا اسکریپت هست فراخوانی می‌شود. (در ادامه متوجه خواهید شد که چرا این کار را انجام دادیم)

قدم دوم: حال باید کدهای جاوا اسکریپت را به کارمان اضافه کنیم. یعنی کدی که باعث وابستگی گزینه‌های select دوم به انتخاب کاربر در select اول می‌شود.


توضیح خط به خط کدهای بالا:

خط ۲ تا ۵: یک آرایه دو بعدی با نام carsAndModels تعریف می‌کنیم و کلید (key) هر خانه را برابر گزینه های select اول (نام کمپانی‌ها) قرار می‌دهیم و در مقدار (value) هر خانه مقادیری را که قصد داریم با انتخاب کلید (key) آن خانه در select اول، درون select دوم بارگذاری شوند را قرار می‌دهیم (مدل خودرو‌ها). (شاید برای افرادی که با جاوااسکریپت آشنایی ندارند درک کدهای بالا کمی سخت باشد ولی خب چاره‌ای نیست!)

خط ۷: تابعی که در خاصیت onchange لیست کشویی اول نوشتیم را اینجا تعریف می‌کنیم. در ادامه خواهیم گفت که درون این تابع چه خبر است!

خط ۸: لیست کشویی اول را انتخاب می‌کنیم و فعلاً داخل متغیر carList قرار می‌دهیم.

خط ۹: لیست کشویی دوم را انتخاب می‌کنیم و فعلاً داخل متغیر modelList قرار می‌دهیم.

خط ۱۰: مقدار گزینه‌ای که در حال حاضر در لیست کشویی اول (کمپانی‌ها) انتخاب شده را دریافت کرده و در متغیر selCar قرار می‌دهیم.

خط ۱۱ تا ۱۳: اگر از قبل گزینه‌ای داخل لیست کشویی دوم (مدل خودروها) قرار داشت، همه را حذف می‌کنیم.

خط ۱۴: مقادیر تعریف شده در خانه‌ی مربوط به گزینه انتخاب شده در لیست کشویی اول، را از آرایه carsAndModels می‌گیریم و در متغیر cars قرار می‌دهیم.

خط ۱۵: بررسی می‌کنیم که آیا گزینه‌ای برای این انتخاب تعریف شده یا خیر، اگر تعریف شده بود دستورات بعدی اجرا خواهند شد. (در واقع بررسی می‌شود که متغیر cars خالی نباشد)

خط ۱۶ تا ۲۰: با استفاده از یک حلقه for تمام مقادیری که از قبل در آرایه carsAndModels تعریف کرده بودیم را به‌صورت یک گزینه (option) در لیست کشویی دوم درج می‌کنیم و کاربر می‌تواند آنها را انتخاب کند.

نکته: می‌توانید بصورت آنلاین فرم بالا را از طریق کلیک روی دکمه زیر تست کنید و خودتان نتیجه را مشاهده کنید:

این آموزش هم به پایان رسید، امیدوارم کسانی که نیاز به این آموزش داشتند نهایت استفاده را برده باشند.

می‌توانید مشکلات خود را از طریق نظرات زیر همین آموزش مطرح کنید تا توسط ما یا دوستان دیگر پاسخ داده شوند.

منبع: w3schools.com

مطالب زیر را حتما بخوانید

بهترین ویرایشگر کد برای طراحی وب

انتخاب یک ویرایشگر کد یا IDE مناسب برای برنامه نویسان همیشه چالشی بزرگ است. در این مقاله ۵ مورد از...

فونت آیکون چیست؟ معرفی فونت آیکون‌های محبوب

استفاده از فونت آیکون در طراحی وبسایت باعث زیبایی و افزایش سرعت سایت شما می‌شود. در این مقاله به معرفی...

روش افزودن دکمه پرینت وب‌سایت

افزودن دکمه پرینت به سایت در وب‌سایت‌های آموزشی یا فروشگاهی برای چاپ رسید خرید یا بلیت بسیار کاربردی است.

بهترین‌ فریم‌ورک‌های CSS را بشناسید

زبان برنامه‌نویسی CSS در طراحی وب زبانی است که تعیین می‌کند چگونه عناصر HTML در کنار هم، درون یک صفحه...

آموزش افزایش سرعت سایت

دوره آموزش افزایش سرعت وب‌سایت (جدید)

مرورگر را باز می‌کنید و آدرس سایتتان را وارد می‌کنید. مرورگر شروع ...

آموزش تولید محتوای متنی

دوره آموزش تولید محتوای متنی در وب

آموزش تولید محتوای متنی در وب‌سایت، یک دوره‌ی آموزشی برای تولید‌کنندگان محتوا ...

آموزش گوگل سرچ کنسول

دوره آموزش گوگل سرچ کنسول 2021

دوره آموزش گوگل سرچ کنسول، دوره‌ای ویدیویی و جامع برای آنالیز و ...

دیدگاهتان را بنویسید

33 پاسخ به “ایجاد لیست کشویی (drop-down) وابسته به هم در HTML”

  1. امین علوی گفت:

    سلام
    اگه بخوایم value برای option های کشو دوم قرار بدیم، چه طور باید این کار رو انجام بدیم؟ برای ذخیره تو دیتابیس
    یعنی تو همین مثال بالا برای مدل ماشین(x5 m6 z3) مقدار بذاریم
    ممنون میشم جواب ام رو یکم سریع تر بدین چون تو سایت های دیگه پیدا نکردم و چند روز معطل همین قضیه ام،ممنون

    • سلام وقت بخیر
      نیازی به value نداره. اگر به تگ option خصیصه value ندید بصورت پیشفرض مقدار درونش بجای value ارسال میشه که می‌تونید در قسمت سرور دریافت و ذخیرش کنید.

  2. امین علوی گفت:

    ممنون واقعاا…مشکل ام کامل حل شد
    ان شاالله همیشه موفق و پیروز باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *