Menu
flag Ar iconالعربيةdown icon

وسم textarea في HTML: الأسطر والتحجيم وmaxlength والنص

كيف تنشئ حقل نص متعدد الأسطر بـ <textarea>: rows وcols، والنص الافتراضي بين الوسمين، وتغيير الحجم والتمدد التلقائي، وmaxlength مع عداد للمحارف، وكسور الأسطر في النص المرسل، والتنسيق.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

كيف تنشئ textarea

<textarea> حقل نص لأكثر من سطر: الرسائل والتعليقات والأوصاف. rows تحدد ارتفاعه الظاهر بالأسطر. اكتب بضعة أسطر واضغط Send:

أمران يختلفان عن <input>: عنصر textarea يحتاج إلى وسم إغلاق، ونصه الابتدائي يوضع بين الوسمين لا في سمة value. ويُرسل name الخاص به مع النص كقيمة، بما في ذلك كسور الأسطر.

سمات textarea

السمةوظيفتها
nameالمفتاح الذي يُرسل النص تحته
rowsالارتفاع الظاهر بالأسطر (الافتراضي 2)
colsالعرض الظاهر بالمحارف (الافتراضي 20)، وwidth في CSS أفضل عادةً
placeholderتلميح يظهر ما دام فارغًا
maxlength, minlengthحدود الطول بالمحارف
requiredيجب ألا يكون فارغًا
readonlyيمكن تحديده ونسخه لا تحريره، ويُرسل مع ذلك
disabledلا يمكن استخدامه، ولا يُرسل
wrapsoft (الافتراضي) أو hard، انظر أدناه
spellchecktrue أو false

النص الافتراضي يوضع بين الوسمين

كل ما بين <textarea> و</textarea> هو النص الابتدائي، تمامًا كما كُتب: بما في ذلك المسافات ومسافات الجدولة وكسور الأسطر. يُتجاهل فقط كسر سطر واحد مباشرة بعد وسم الفتح. وهذا يجعل الإزاحة فخًا:

العنصر textarea الثاني يبدأ بأربع مسافات وينتهي بكسر سطر ومسافتين أخريين، وعلى القارئ حذفها كلها. اكتب النص الافتراضي ملاصقًا للوسمين.

HTML داخل textarea لا يُعرض كتنسيق، فـ <b>hi</b> بين الوسمين يظهر كنص حرفي.

العرض وتغيير الحجم والتمدد التلقائي

تتيح المتصفحات للقارئ سحب الزاوية لتغيير حجم textarea. خاصية CSS resize تحد من ذلك، وwidth: 100% مع box-sizing: border-box تجعله يملأ حاويته بالضبط:

الأخير يعيد ضبط ارتفاعه ثم يضبطه على scrollHeight (ارتفاع محتواه وحشوه) مضافًا إليه حدوده، مع كل ضغطة مفتاح. اكتب فيه عدة أسطر: لن يُظهر شريط تمرير أبدًا. وresize: vertical هي القيمة الافتراضية الألطف: تحصل الإجابات الطويلة على مساحة، ولا يستطيع أحد سحب الحقل ليصبح أعرض من التخطيط.

متصفحات Chromium تستطيع التمدد التلقائي بـ CSS وحدها عبر field-sizing: content. المتصفحات التي لا تدعمها تتجاهل السطر وتحتفظ بالحجم العادي، فإضافتها آمنة، لكن أبقِ السكربت إن كان يجب أن يحصل كل القراء على الحقل المتمدد.

maxlength وعداد المحارف

maxlength توقف الإدخال عند عدد من المحارف. وحدها لا تعطي أي تنبيه، فلا يلاحظ القارئ إلا حين تتوقف الكتابة عن العمل. العداد يصلح ذلك:

aria-describedby تجعل قارئات الشاشة تقرأ العداد مع الحقل، وaria-live="polite" تعلن تغييراته بين ضغطات المفاتيح. وmaxlength يفرضها المتصفح فقط، لذلك يجب أن يتحقق الخادم من الطول أيضًا.

كسور الأسطر في النص المرسل

كسور الأسطر التي يكتبها القارئ تُرسل مع النص. في البيانات المرسلة يصبح كل منها زوجًا من محرفي العودة وتغذية السطر (%0D%0A في النموذج المرمَّز بترميز URL)، وهذا ما تتوقعه معظم الخوادم. ولعرض النص لاحقًا في صفحة مع كسور أسطره، إما أن تحوّلها إلى <br> عند الإخراج أو تنسّق العنصر بـ white-space: pre-line.

wrap="hard" (التي تحتاج إلى cols) تذهب أبعد: تُدرج أيضًا كسور أسطر حيث التف النص بصريًا، فيستقبل الخادم أسطرًا لا تتجاوز cols محرفًا. أما الافتراضية wrap="soft" فترسل فقط الكسور التي كتبها القارئ.

تنسيق textarea

يعطي Chrome وFirefox عناصر textarea خطًا أحادي المسافة بحجم نحو 13px، ولهذا يبدو textarea غالبًا غريبًا عن الصفحة. font: inherit تصلح ذلك. أبقِ نمط تركيز ظاهرًا إن غيّرت الحد:

يجب أن يصل نص placeholder إلى تباين مقروء، فالرمادي الفاتح الذي تستخدمه تصاميم كثيرة صعب القراءة. وكما في كل حقل، placeholder ليس تسمية: يختفي بمجرد أن يكتب القارئ. التسميات مشروحة في label في HTML.

أخطاء شائعة

  • <textarea value="...">. لا توجد سمة value، فضع النص بين الوسمين.
  • إزاحة النص الافتراضي مع شيفرة HTML. تصبح المسافات جزءًا من القيمة.
  • <textarea /> ذاتي الإغلاق. ليس عنصرًا فارغًا، ومن دون </textarea> تُبتلع بقية الصفحة داخله كنص.
  • غياب font: inherit، فيستخدم الحقل خطًا صغيرًا أحادي المسافة.
  • resize: none مع ارتفاع ثابت صغير. تنتهي الإجابات الطويلة في صندوق تمرير صغير جدًا.
  • الاعتماد على maxlength وحدها. تحقق من الطول على الخادم أيضًا.

الأسئلة الشائعة

كيف أنشئ textarea في HTML؟

اكتب <textarea name="message" rows="4"></textarea> داخل نموذج مع <label>. على عكس <input> له وسم إغلاق، وأي شيء بين الوسمين هو النص الابتدائي.

كيف أضبط القيمة الافتراضية لـ textarea؟

ضع النص بين الوسمين: <textarea name="bio">Hello</textarea>. ليس لـ textarea سمة value في HTML. وفي JavaScript اقرأ textarea.value واضبطها.

كيف أمنع تغيير حجم textarea؟

اضبط resize: none في CSS. وresize: vertical ألطف عادةً: يستطيع القارئ تطويل الحقل للنصوص الطويلة، لكنه لا يستطيع إفساد تخطيطك بسحبه عرضيًا.

كيف أحدد عدد المحارف في textarea؟

أضف maxlength="280". يتوقف المتصفح عن قبول الإدخال عند ذلك الطول. اعرض بجانبه عدادًا يتحدّث مع حدث input كي يعرف القارئ كم بقي له، وتحقق من الطول على الخادم أيضًا.

لماذا يستخدم textarea خطًا مختلفًا؟

يعطي Chrome وFirefox عناصر textarea خطًا أحادي المسافة بحجم نحو 13px افتراضيًا. أضف font: inherit ليطابق بقية الصفحة.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن