شكرًا.
كيف تظن أنه يمكن أن يعمل؟
إليك بعض الأفكار التي لدي، رغم أنها لا تزال تحتاج إلى إجابة بعض الأسئلة:
الأساسيات الموجودة حاليًا: عناصر النّص الوارد (Placeholders). لكن حاليًا الأمر إما كل شيء أو لا شيء
أبسط هيكل يمكنني التفكير فيه لمحاكاة سلوك النماذج هو أن يظهر “النموذج” في محرر النصوص (محرر “d-editor” الذي يظهر عند الضغط على إنشاء موضوع).
في ذلك المحرر، يمكنك توفير “أقسام” مختلفة، مثل:
الاسم
الموقع
المشكلة
سيكون عنوان كل قسم عنصر نص وارد (placeholder)، بحيث عندما يضغط المستخدم عليه، يختفي العنوان (مثل: الاسم).
حتى الآن، إعداد هذا الأمر ممكن باستخدام مكون سمة النص الوارد.
لكن… لن يؤدي ذلك تمامًا إلى الحصول على سلوك شبيه بالنماذج، لأن عناصر النص الوارد الموجودة حاليًا تظهر بشكل “كل شيء أو لا شيء”، كما أصف في ما يلي.
سلوك شبيه بالنماذج مع عناصر النص الوارد. لكن كيف يمكنك الوصول إلى عناصر div في المحرر؟
لجعل هذا الأمر أكثر شبيهًا بالنماذج، يجب أن يتصرف كل قسم بشكل مستقل.
حاليًا، ومع مكون سمة النص الوارد، الأمر إما كل شيء أو لا شيء—إذا ضغط المستخدم على المحرر، تختفي جميع عناوين النص الوارد.
لذلك، للحصول على سلوك نموذجي أساسي، بدلاً من ظهور أو اختفاء جميع العناوين معًا، نحتاج إلى أن يتصرف كل قسم من عناوين النص الوارد بشكل مستقل. إذن، عندما يضغط المستخدم على النص الوارد “الاسم”، يختفي ذلك النص الوارد فقط، بينما تبقى عناصر النص الوارد الأخرى (“الموقع” و"المشكلة").
سيكون ذلك ممكنًا إذا كان كل عنصر نص وارد جزءًا من عنصر div خاص به بمعرف فريد داخل محرر النصوص. ثم، باستخدام مكتبة jQuery، يمكنك إظهار وإخفاء النص الوارد بناءً على ما إذا كان المستخدم قد نقر في المنطقة. هذا يتطلب إضافة عناصر div منفصلة داخل ما هو حاليًا مربع نص (textarea)، وأنا غير متأكد من كيفية القيام بذلك.
سؤال لهذا النهج: كيف يمكنك الوصول إلى عناصر div داخل مربع نص المحرر، حتى تتمكن من اتخاذ إجراء عند نقر المستخدم عليها؟
بديل: استخدام خيار النص القالب الموجود. لكن كيف نجعل النص غير قابل للتعديل؟
ربما يكون البديل هو أن عناوين الأقسام لا “تختفي” عندما يضغط المستخدم. إذن، ستبقى عناوين الأقسام (مثل: الاسم، والموقع، والمشكلة) كنص ثابت على الصفحة. لجعلها أكثر شبيهًا بالنماذج، مقارنة بالافتراضي الحالي لقالب الموضوع البسيط:
- لا يمكن للمستخدم تعديل نص عنوان القسم (أي
contenteditable="false") - لا يمكن للمستخدم إزالة نقاط الفصل بين الأقسام
- سيكون هناك مساحة أسفل عنوان القسم حيث من الواضح للمستخدم أنه يمكنه الكتابة. في القالب الافتراضي الحالي، سيتعين عليهم الانتقال إلى حيث يوجد النص، والضغط على
return، لإنشاء مساحة للكتابة.
سؤال لهذا النهج: كيف يمكنك إدخال نص القالب، ولكن (i) جعل هذا النص غير قابل للتعديل من قبل المستخدم و (ii) وجود أماكن واضحة للمستخدم لإدخال المعلومات أسفل كل جزء من النص؟
ربما توجد طريقة أفضل للحصول على سلوك شبيه بالنماذج؟