الدرس التطبيقي حول الترميز الخاص بأفضل الممارسات المتعلّقة بنموذج العناوين

كيف يمكنك تصميم نموذج يناسب مجموعة متنوعة من تنسيقات الأسماء والعناوين؟ إنّ الأخطاء البسيطة في النموذج تثير انزعاج المستخدمين ويمكن أن تؤدي إلى مغادرة موقعك الإلكتروني أو التوقّف عن إكمال عملية شراء أو اشتراك.

يوضّح لك هذا الدرس التطبيقي حول الترميز كيفية إنشاء نموذج سهل الاستخدام وسهل الوصول إليه يعمل بشكل جيد لمعظم المستخدمين.

الخطوة 1: الاستفادة إلى أقصى حد من عناصر HTML وسماته

ستبدأ هذا الجزء من ورشة رموز البرامج باستخدام نموذج فارغ، ما عليك سوى كتابة عنوان وزر بنفسك. بعد ذلك، ستبدأ بإضافة مدخلات. (يتم تضمين CSS وقليل من JavaScript مسبقًا).

  • انقر على Remix to Edit (إنشاء ريمكس لتعديله) ليصبح المشروع قابلاً للتعديل.

  • أضِف حقل اسم إلى عنصر <form> باستخدام الرمز البرمجي التالي:

<section>
  <label for="name">Name</label>
  <input id="name" name="name">
</section>

قد يبدو ذلك معقّدًا ومتكرّرًا لحقل اسم واحد فقط، ولكنه يؤدي حاليًا إلى الكثير من الإجراءات.

لقد ربطت label بـ input من خلال مطابقة سمة for في label مع name أو id في input. يؤدي النقر على تصنيف إلى نقل التركيز إلى إدخاله، ما يجعله هدفًا أكبر بكثير مقارنةً بالإدخال وحده، وهو أمر جيد للأصابع والإبهام ونقرات الماوس. تُعلِن تطبيقات قراءة الشاشة عن نص التصنيف عندما يتم التركيز على التصنيف أو إدخاله.

ماذا عن name="name"؟ هذا هو الاسم (الذي يُصادف أنّه "name") المرتبط بالبيانات من هذا الإدخال الذي يتم إرساله إلى الخادم عند إرسال النموذج. ويعني تضمين سمة name أيضًا أنّه يمكن الوصول إلى البيانات من هذا العنصر باستخدام FormData API.

الخطوة 2: إضافة سمات لمساعدة المستخدمين على إدخال البيانات

ما الذي يحدث عند النقر على حقل إدخال الاسم في Chrome؟ من المفترض أن تظهر لك اقتراحات "الملء التلقائي" التي حفظها المتصفّح وأن تكون التخمينات مناسبة لهذا الإدخال، استنادًا إلى قيمه name وid.

الآن أضف autocomplete="name" إلى رمز الإدخال لكي يظهر على النحو التالي:

<section>
  <label for="name">Name</label>
  <input id="name" name="name" autocomplete="name">
</section>

أعِد تحميل الصفحة في Chrome وانقر على حقل الإدخال الاسم. ما هي الاختلافات؟

من المفترض أن تلاحظ تغييرًا بسيطًا: باستخدام autocomplete="name"، أصبحت الاقتراحات الآن محددة بالقيم التي تم استخدامها سابقًا في إدخالات النماذج التي تحتوي أيضًا على autocomplete="name". لا يعتمد المتصفّح فقط على التخمينات بشأن المحتوى المناسب، بل يمكنك التحكّم فيه. سيظهر لك أيضًا خيار إدارة… لعرض الأسماء والعناوين التي يخزّنها المتصفّح وتعديلها.

لقطةَا شاشة لمتصفّح Chrome على هاتف Android تعرضان نموذجًا يتضمّن حقل إدخال واحدًا، مع قيمة الإكمال التلقائي وبدونها يعرض أحدهما واجهة مستخدم المتصفّح التي تقترح القيم بشكل استقرائي، ويعرض الآخر واجهة المستخدم عندما تكون هناك قيم إكمال تلقائي محفوظة.
واجهة مستخدم لاستخدام ميزة "الملء التلقائي" مع القيم التي تم تخمينها، بدلاً من ميزة "الإكمال التلقائي"

أضِف الآن سمات التحقّق من القيود maxlength وpattern وrequired لكي يظهر رمز الإدخال على النحو التالي:

<section>
  <label for="name">Name</label>
  <input id="name" name="name" autocomplete="name"
    maxlength="100" pattern="[\p{L} \-\.]+" required>
</section>
  • يعني الرمز maxlength="100" أنّ المتصفّح لن يسمح بأي إدخال أطول من 100 حرف.

  • تستخدم pattern="[\p{L} \-\.]+" تعبيرًا عاديًا يسمح بأحرف Unicode، والواصلات والنقاط (نقاط كاملة). وهذا يعني أنّ الأسماء مثل "فاتن" أو "عماد" لا يتم تصنيفها على أنّها "غير صالحة". لا ينطبق ذلك في حال استخدام القيمة \w التي [تسمح فقط بالأحرف من الأبجدية اللاتينية.

  • القيمة "required" مطلوبة. لن يسمح المتصفّح بإرسال النموذج بدون بيانات في هذا الحقل، وسيحذّر من الإدخال ويُبرزه إذا حاولت إرسال النموذج. ولا يلزم استخدام أي رمز إضافي.

لاختبار طريقة عمل النموذج مع هذه السمات أو بدونها، جرِّب إدخال البيانات:

  • حاوِل إدخال قيم لا تتوافق مع سمة pattern.
  • يُرجى محاولة إرسال النموذج باستخدام حقل فارغ. سيظهر لك تحذير من وظيفة المتصفّح المضمّنة بشأن الحقل المطلوب الفارغ وضبط التركيز عليه.

الخطوة 3: إضافة حقل عنوان مرن إلى النموذج

لإضافة حقل عنوان، أضِف الرمز التالي إلى النموذج:

<section>
  <label for="address">Address</label>
  <textarea id="address" name="address" autocomplete="address"
    maxlength="300" required></textarea>
</section>

إنّ textarea هي الطريقة الأكثر مرونة للمستخدمين لإدخال عنوانهم، وهي رائعة ل القطع واللصق.

يجب تجنُّب تقسيم نموذج العنوان إلى مكوّنات مثل اسم الشارع ورقمه ما لم يكن ذلك ضروريًا. لا تفرض على المستخدمين محاولة إدخال عنواناتهم في حقول غير منطقية.

أضِف الآن حقلَي الرمز البريدي والبلد أو المنطقة. للتبسيط، تم تضمين أوّل خمسة بلدان فقط هنا. يتم تضمين قائمة كاملة في نموذج العنوان المكتمل.

<section>
  <label for="postal-code">ZIP or postal code (optional)</label>
  <input id="postal-code" name="postal-code"
    autocomplete="postal-code" maxlength="20">
</section>

<section id="country-region">
  <label for="">Country or region</label>
  <select id="country" name="country" autocomplete="country"
    required>
      <option selected value="SPACER"> </option>
      <option value="AF">Afghanistan</option>
      <option value="AX">Åland Islands</option>
      <option value="AL">Albania</option>
      <option value="DZ">Algeria</option>
      <option value="AS">American Samoa</option>
  </select>
</section>

ستلاحظ أنّ الرمز البريدي اختياري، وذلك لأنّ العديد من البلدان لا تستخدم الرموز البريدية. (يقدّم الدليل العالمي معلومات عن التنسيقات المختلفة للعناوين في 194 بلدًا، بما في ذلك نماذج عناوين.) يتم استخدام التصنيف البلد أو المنطقة بدلاً من البلد، لأنّ بعض الخيارات من القائمة الكاملة (مثل المملكة المتحدة) ليست بلدانًا فردية (على الرغم من قيمة autocomplete).

الخطوة 4: السماح للعملاء بإدخال عناوين الشحن والفوترة بسهولة

لقد أنشأت نموذج عناوين فعّالًا للغاية، ولكن ماذا لو كان موقعك الإلكتروني يتطلّب أكثر من عنوان واحد، مثلاً لعمليات الشحن والفوترة؟ حاوِل تعديل النموذج لتتمكّن العملاء من إدخال عنوانَي الشحن والدفع. كيف يمكنك جعل إدخال البيانات سريعًا وسهلاً قدر الإمكان، خاصة إذا كان العنوانان متماثلان؟ توضّح المقالة المصاحبة لهذا الدرس التطبيقي حول الترميز أساليب معالجة عناوين متعددة. مهما كان ما تفعله، احرص على استخدام قيم autocomplete الصحيحة.

الخطوة 5: إضافة حقل رقم هاتف

لإضافة إدخال رقم هاتف، أضِف الرمز التالي إلى النموذج:

<section>
  <label for="tel">Telephone</label>
  <input id="tel" name="tel" autocomplete="tel" type="tel"
    maxlength="30" pattern="[\d \-\+]+" enterkeyhint="done"
    required>
</section>

بالنسبة إلى أرقام الهواتف، يمكنك استخدام إدخال واحد: لا تقسم الرقم إلى أجزاء. يسهّل ذلك على المستخدِمين إدخال البيانات أو نسخها ولصقها، ويبسّط عملية التحقّق، ويمكّن المتصفّحات من الملء التلقائي.

هناك سمتان يمكن أن تُحسِّن تجربة المستخدم عند إدخال رقم هاتف:

  • تضمن type="tel" حصول مستخدمي الأجهزة الجوّالة على لوحة المفاتيح المناسبة.
  • يضبط enterkeyhint="done" تصنيف مفتاح Enter في لوحة مفاتيح الأجهزة الجوّالة للإشارة إلى أنّ هذا هو الحقل المتبقّي وأنّه يمكن الآن إرسال النموذج (القيمة التلقائية هي next).
لقطتا شاشة لنموذج على نظام Android تعرضان كيف تغيّر سمة إدخال مفتاح Enter رمز زر مفتاح Enter.
استخدِم سمة Enterkeyhint لضبط تصنيف زر Enter: "next" (التالي) و"done".

من المفترض أن يظهر نموذج العنوان الكامل على النحو التالي:

  • جرِّب النموذج على أجهزة مختلفة. ما هي الأجهزة والمتصفحات التي تستهدفها؟ كيف يمكن تحسين النموذج؟

هناك عدة طرق لاختبار النموذج على أجهزة مختلفة:

مزيد من المعلومات

  • إحصاءات Google ومراقبة المستخدِمين الفعليين: يمكنك تفعيل اختبار ومراقبة أداء تصميم النموذج وقابليته للاستخدام من قِبل المستخدِمين الفعليين، وتحقّق مما إذا كانت التغييرات ناجحة. يجب مراقبة أداء التحميل ومؤشرات أداء الويب الأخرى، بالإضافة إلى إحصاءات الصفحة (ما هي نسبة المستخدمين الذين يغادرون صفحة نموذج العنوان بدون إكماله؟ ما هو الوقت الذي يقضيه المستخدمون على صفحات نموذج العنوان؟) وإحصاءات التفاعل (ما هي مكونات الصفحة التي يتفاعل معها المستخدمون أو لا يتفاعلون معها؟)

  • ما هو الموقع الجغرافي لمستخدمي تطبيقك؟ كيف يتم تنسيق عنوانه؟ ما هي الأسماء التي يستخدمونها لمكونات العنوان، مثل الرمز البريدي؟ دليل Frank's Compulsive Guide to Postal Addresses يقدّم روابط مفيدة وإرشادات مفصّلة حول تنسيقات العناوين في أكثر من 200 بلد.

  • تشتهر أدوات اختيار البلدان بسهولة استخدامها المنخفضة. من الأفضل تجنُّب اختيار عناصر لقائمة طويلة من العناصر، ويُرجى العِلم أنّ معيار رموز البلدان ISO 3166 يُدرِج حاليًا 249 بلدًا. بدلاً من <select>، ننصحك باستخدام بديل مثل أداة اختيار البلدان من Baymard Institute.

    هل يمكنك تصميم أداة اختيار أفضل للقوائم التي تحتوي على الكثير من العناصر؟ كيف يمكنك التأكّد من أنّ تصميمك يمكن الوصول إليه على مجموعة من الأجهزة والأنظمة الأساسية؟ (لا يعمل العنصر <select> بشكل جيد مع عدد كبير من العناصر، ولكنه قابل للاستخدام على الأقل تقريبًا على جميع المتصفحات والأجهزة المساعِدة).

    تتناول مشاركة المدونة <input type="country" /> مدى تعقيد توحيد أداة اختيار البلد. يمكن أن تؤدي ترجمة أسماء البلدان أيضًا إلى مشاكل. تتضمّن قوائم البلدان أداة لتحميل رموز البلدان وأسمائها بعدّة لغات وبتنسيقات متعددة.