منطق شرطی در فرم: سؤالی که فقط به آدمِ درست نشان داده میشود
بهجای فرم ۴۰ سؤالی که همه باید ببینند، فرمی که به هر نفر فقط سؤالهای مربوط به خودش را نشان میدهد.
فرض کنید فرم استخدام دارید. اگر متقاضی بگوید «سابقهی کار ندارم»، ده سؤال بعدی دربارهی محل کار قبلی بیمعنی است. منطق شرطی دقیقاً همین را حل میکند: سؤال بر اساس پاسخ قبلی نشان داده یا پنهان میشود.
سه کاری که منطق میتواند بکند
- نمایش/پنهانکردن — سادهترین و پرکاربردترین حالت.
- پرش بین صفحهها — «اگر مشتری نیستید، برو به صفحهی پایانی».
- خارجکردن از نظرسنجی — وقتی کسی شرط لازم را ندارد، ادامه دادنش فقط دادهی بیربط میسازد.
تلهی اول: پاسخِ سؤالِ پنهانشده
کاربر سؤال را دیده، جواب داده، بعد جواب سؤال قبلی را عوض کرده و حالا آن سؤال پنهان شده. آن پاسخ باید چه شود؟
اگر نگهش دارید، در گزارش پاسخی دارید که کاربر عملاً پسش گرفته. اگر پاکش کنید و کاربر دوباره برگردد، باید از نو پر کند. رفتار درست: پاسخِ فیلدِ پنهان در ثبت نهایی کنار گذاشته شود — یعنی تا وقتی کاربر در فرم است نگهش دارید (برای اینکه اگر برگشت از دست نرود) ولی در دادهی نهایی نیاید.
تلهی دوم: حلقه
«اگر الف پر شد، ب را نشان بده» و «اگر ب پر شد، الف را پنهان کن». این دو قاعده همدیگر را بینهایت بار فعال میکنند. هر موتور منطقی باید حلقه را تشخیص بدهد و جلویش را بگیرد، وگرنه فرم در مرورگر کاربر قفل میشود.
چطور از حلقه دور بمانید
یک قاعدهی ساده که ۹۹٪ موارد را حل میکند: قاعدهها را فقط رو به جلو بنویسید. سؤال شماره ۵ میتواند به پاسخ سؤال ۳ وابسته باشد، ولی سؤال ۳ نباید به پاسخ ۵ وابسته باشد.
تلهی سوم: اعتبارسنجی سمت سرور
منطق در مرورگر اجرا میشود تا کاربر بلافاصله نتیجه را ببیند. ولی مرورگر قابل دستکاری است. اگر فیلدی «الزامی فقط وقتی الف = بله» است، سرور هم باید همین را بداند — وگرنه کسی میتواند فرم را بدون آن فیلد بفرستد.
یعنی منطق باید دو بار اجرا شود: یک بار در مرورگر برای تجربه، یک بار در سرور بهعنوان مرجع.
کی منطق را زیادهروی میکنید
اگر فرمتان بیش از ۱۵ قاعده دارد و خودتان دیگر نمیدانید چه به چه وصل است، احتمالاً باید بهجای یک فرمِ پیچیده، دو یا سه فرمِ ساده بسازید و از صفحهی اول کاربر را به فرمِ درست بفرستید.