𝗙𝗼𝗿𝗺 𝗩𝗮𝗹𝗶𝗱𝗮𝘁𝗶𝗼𝗻 𝗶𝗻 𝟮𝟬𝟮𝟲: 𝗦𝘁𝗼𝗽 𝗨𝘀𝗶𝗻𝗴 𝗟𝗶𝗯𝗿𝗮𝗿𝗶𝗲𝘀 𝗨𝗻𝗻𝗲𝗰𝗲𝘀𝘀𝗮𝗿𝗶𝗹𝘆
2026 میں فارم کو ویلیڈیٹ کرنے کے لیے آپ کو کسی بھاری بھرکم JavaScript لائبریری کی ضرورت نہیں ہے۔
میں نے گزشتہ ماہ بغیر کسی ویلیڈیشن لائبریری کے ایک چیک آؤٹ فارم تیار کیا تھا۔ اس نے صرف نیٹیو HTML اور JavaScript کی 30 لائنوں کے ذریعے مطلوبہ فیلڈز (required fields)، ای میل کے فارمیٹ اور پاس ورڈ کی لمبائی کو سنبھالا۔
npm install چلانے سے پہلے، زیادہ تر مسائل حل کرنے کے لیے ان چھ نیٹیو ایٹریبیوٹس (native attributes) کا استعمال کریں:
• required: ٹیکسٹ، سلیکٹس اور چیک باکسز کے لیے خالی سبمیشن کو روکتا ہے۔
• type: بنیادی فارمیٹ کی غلطیوں کو پکڑنے کے لیے type="email" یا type="url" کا استعمال کریں۔
• minlength اور maxlength: بغیر کسی کسٹم لاجک کے حروف کی حد (character limits) کو نافذ کرتا ہے۔
• min, max, اور step: نمبروں اور تاریخوں کے لیے رینج (ranges) کو کنٹرول کرتا ہے۔
• pattern: پوسٹل کوڈز جیسے مخصوص فارمیٹس کو نافذ کرنے کے لیے regex کا استعمال کرتا ہے۔
• inputmode اور autocomplete: صحیح کی بورڈ دکھا کر یا پہلے سے موجود ڈیٹا کو بھر کر غلطیوں کو کم کرتا ہے۔
اگر نیٹیو پیغامات بہت عام (generic) ہوں، تو Constraint Validation API کا استعمال کریں۔
ہر input کے پاس ایک validity آبجیکٹ ہوتا ہے۔ آپ مددگار ایرر پیغامات لکھنے کے لیے valueMissing یا typeMismatch جیسی پراپرٹیز کو چیک کر سکتے ہیں۔ اپنا متن دکھانے کے لیے setCustomValidity کا استعمال کریں۔
یاد رکھیں کہ input ایونٹ پر اپنے کسٹم میسج کو کلیئر کریں۔ اگر آپ ایسا نہیں کرتے، تو صارف کی اصلاح کے بعد بھی فیلڈ ایرر اسٹیٹ میں ہی پھنسی رہتی ہے۔
اسٹائلنگ کے لیے، یہ ٹریک کرنے کے لیے JavaScript کا استعمال بند کریں کہ آیا کوئی فیلڈ "touched" ہے۔
اب CSS :user-invalid pseudo-class اسے سنبھالتی ہے۔ یہ اسٹائلز صرف اس وقت لاگو کرتی ہے جب صارف کسی فیلڈ کے ساتھ انٹریکٹ کرتا ہے۔ ایرر ٹیکسٹ خود بخود دکھانے کے لیے اسے :has() سلیکٹر کے ساتھ ملا دیں۔ اس سے درجنوں لائنوں کا غیر ضروری کوڈ ختم ہو جاتا ہے۔
آپ کو اصل میں لائبریری کب استعمال کرنی چاہیے؟
صرف ان دو مخصوص صورتوں میں لائبریری کا سہارا لیں:
- Cross-field validation: جب ایک فیلڈ دوسری پر منحصر ہو، جیسے کہ "confirm password" یا پیچیدہ کنڈیشنل لاجک۔
- Async validation: جب آپ کو ڈیٹا بیس چیک کرنے کی ضرورت ہو، جیسے کہ "کیا یہ یوزر نیم پہلے سے موجود ہے؟"
اگر آپ کے فارم کو صرف سنگل فیلڈ رولز کی ضرورت ہے، تو نیٹیو طریقہ اپنائیں۔ کم کوڈ کا مطلب ہے کم بگ (bugs)۔ براؤزر سے آغاز کریں۔ لائبریری صرف تب شامل کریں جب براؤزر اپنی حد تک پہنچ جائے۔
Optional learning community: https://t.me/GyaanSetuAi