الفرق بين المراجعتين لصفحة: «HTML/form»

من موسوعة حسوب
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}'
إضافة قسمين وتعديل 6 أمثلة
سطر 4: سطر 4:
مثال بسيط عن نموذج يُرسَل عبر الطريقة GET:<syntaxhighlight lang="html">
مثال بسيط عن نموذج يُرسَل عبر الطريقة GET:<syntaxhighlight lang="html">
<form action="" method="get">
<form action="" method="get">
   <label for="name">Name:</label>
   <label for="name">الاسم:</label>
   <input id="name" type="text" name="name">
   <input id="name" type="text" name="name">
   <input type="submit" value="Save">
   <input type="submit" value="أرسل">
</form>
</form>
</syntaxhighlight>مثال بسيط عن نموذج يُرسَل عبر الطريقة POST: <syntaxhighlight lang="html">
</syntaxhighlight>مثال بسيط عن نموذج يُرسَل عبر الطريقة POST: <syntaxhighlight lang="html">
<form action="" method="post">
<form action="" method="post">
   <label for="name">Name:</label>
   <label for="name">الاسم:</label>
   <input id="name" type="text" name="name">
   <input id="name" type="text" name="name">
   <input type="submit" value="Save">
   <input type="submit" value="أرسل">
</form>
</form>
</syntaxhighlight>مثال عن نموذج يبيّن استخدام العناصر <code>[[HTML/fieldset|<fieldset>]]</code> و <code>[[HTML/legend|<legend>]]</code> و <code>[[HTML/label|<label>]]</code>:<syntaxhighlight lang="html">
</syntaxhighlight>مثال عن نموذج يبيّن استخدام العناصر <code>[[HTML/fieldset|<fieldset>]]</code> و <code>[[HTML/legend|<legend>]]</code> و <code>[[HTML/label|<label>]]</code>:<syntaxhighlight lang="html">
<form action="" method="post">
<form action="" method="post">
   <fieldset>
   <fieldset>
     <legend>Title</legend>
     <legend>النموذج</legend>
     <input type="radio" name="radio" id="radio">
     <input type="radio" name="radio" id="radio">
     <label for="radio">Click me</label>
     <label for="radio">اضغط هنا</label>
   </fieldset>
   </fieldset>
</form>
</form>
</syntaxhighlight>
</syntaxhighlight>


== بطاقة العنصر ==
{| class="wikitable" style="width: 100%;"
{| class="wikitable" style="width: 100%;"
|-
|-
سطر 69: سطر 70:
كان يُسمَح في الإصدارات السابقة من HTML بفصل ترميزات المحارف بفاصلة أو فراغ، أما في HTML5 فلا يُسمَح إلا بفصلها بفراغات.
كان يُسمَح في الإصدارات السابقة من HTML بفصل ترميزات المحارف بفاصلة أو فراغ، أما في HTML5 فلا يُسمَح إلا بفصلها بفراغات.


==== مثال ====
مثال عن استخدام الخاصية <code>accept-charset</code> للإشارة إلى أنَّ النموذج يقبل المدخلات بترميز UTF-8 أو [[wikipedia:ISO/IEC_8859-6ISO-8859-6|ISO-8859-6]] (للمحارف العربية):<syntaxhighlight lang="html">
مثال عن استخدام الخاصية accept-charset للإشارة إلى أنَّ النموذج يقبل المدخلات بترميز UTF-8 أو [[wikipedia:ISO/IEC_8859-6ISO-8859-6|ISO-8859-6]] (للمحارف العربية):<syntaxhighlight lang="html">
<form action="" method="get" accept-charset="UTF-8 ISO-8859-6">
<form action="" method="get" accept-charset="UTF-8 ISO-8859-6">
   <label for="name">Name:</label>
   <label for="name">الاسم:</label>
   <input id="name" type="text" name="name">
   <input id="name" type="text" name="name">
   <input type="submit" value="Save">
   <input type="submit" value="أرسل">
</form>
</form>
</syntaxhighlight>
</syntaxhighlight>
سطر 94: سطر 94:
يمكن تجاوز هذه القيمة باستخدام الخاصية <code>formenctype</code> في عنصر <code>[[HTML/button|<button>]]</code> أو <code>[[HTML/input|<input>]]</code>.
يمكن تجاوز هذه القيمة باستخدام الخاصية <code>formenctype</code> في عنصر <code>[[HTML/button|<button>]]</code> أو <code>[[HTML/input|<input>]]</code>.


==== مثال ====
سيُرسَل النموذج الآتي كنوع بيانات <code>multipart/form-data</code>:<syntaxhighlight lang="html">
سيُرسَل النموذج الآتي كنوع بيانات <code>multipart/form-data</code>:<syntaxhighlight lang="html">
<form action="" method="post" enctype="multipart/form-data">
<form action="" method="post" enctype="multipart/form-data">
   <label for="name">Name:</label>
   <label for="name">الاسم:</label>
   <input id="name" type="text" name="name">
   <input id="name" type="text" name="name">
   <input type="submit" value="Save">
   <input type="submit" value="أرسل">
</form>
</form>
</syntaxhighlight>
</syntaxhighlight>
سطر 115: سطر 114:
إذا لم تُحدَّد قيمة لهذه الخاصية (أي أنَّ على المتصفح التحقق من حقول النموذج)، فيمكن تجاوز الضبط الافتراضي باستخدام الخاصية <code>formnovalidate</code> على عنصر <code>[[HTML/button|<button>]]</code> أو <code>[[HTML/input|<input>]]</code> ينتمي إلى النموذج.
إذا لم تُحدَّد قيمة لهذه الخاصية (أي أنَّ على المتصفح التحقق من حقول النموذج)، فيمكن تجاوز الضبط الافتراضي باستخدام الخاصية <code>formnovalidate</code> على عنصر <code>[[HTML/button|<button>]]</code> أو <code>[[HTML/input|<input>]]</code> ينتمي إلى النموذج.


==== مثال ====
لن يتحقق المستخدم من المدخلات في النموذج الآتي لأننا استعملنا فيه الخاصية <code>novalidate</code>:<syntaxhighlight lang="html">
لن يتحقق المستخدم من المدخلات في النموذج الآتي لأننا استعملنا فيه الخاصية <code>novalidate</code>:<syntaxhighlight lang="html">
<form action="" method="get" novalidate>
<form action="" method="get" novalidate>
   <label for="name">Name:</label>
   <label for="name">الاسم:</label>
   <input id="name" type="text" name="name">
   <input id="name" type="text" name="name" required>
   <input type="submit" value="Save">
   <input type="submit" value="أرسل">
</form>
</form>
</syntaxhighlight>
</syntaxhighlight>
سطر 132: سطر 130:
*<code>‎__top</code>: عرض الصفحة مكان أعلى صفحة في الهيكلية (أي الصفحة التي تكون من الآباء المباشرين أو غير المباشرين للصفحة الحالية وليس لها صفحة أب). إذا لم تكن هنالك صفحة أب فستسلك هذه القيمة سلوك القيمة ‎<code>__self</code> نفسه.
*<code>‎__top</code>: عرض الصفحة مكان أعلى صفحة في الهيكلية (أي الصفحة التي تكون من الآباء المباشرين أو غير المباشرين للصفحة الحالية وليس لها صفحة أب). إذا لم تكن هنالك صفحة أب فستسلك هذه القيمة سلوك القيمة ‎<code>__self</code> نفسه.
يمكن تجاوز هذه القيمة باستخدام الخاصية <code>formtarget</code> في عنصر <code>[[HTML/button|<button>]]</code> أو <code>[[HTML/input|<input>]]</code>.
يمكن تجاوز هذه القيمة باستخدام الخاصية <code>formtarget</code> في عنصر <code>[[HTML/button|<button>]]</code> أو <code>[[HTML/input|<input>]]</code>.
== التنسيق الافتراضي ==
تعرض أغلبية المتصفحات العنصر <code><form></code> بضبط الخاصية <code>[[CSS/display|display]]</code> إلى <code>block</code>، وإزالة الهامش العلوي <code>[[CSS/margin-top|margin-top]]</code>:<syntaxhighlight lang="css">
form {
  display: block;
  margin-top: 0em;
}
</syntaxhighlight>
==مصادر ومواصفات==
==مصادر ومواصفات==
*معيار [https://html.spec.whatwg.org/multipage/forms.html#the-form-element HTML Living Standard].
*معيار [https://html.spec.whatwg.org/multipage/forms.html#the-form-element HTML Living Standard].

مراجعة 05:55، 25 فبراير 2018

يُمثِّل العنصر <form> قسمًا في المستند الذي يحتوي على عناصر يستطيع المستخدم التفاعل معها لإرسال بيانات إلى خادوم الويب.

مثال بسيط عن نموذج يُرسَل عبر الطريقة GET:

<form action="" method="get">
  <label for="name">الاسم:</label>
  <input id="name" type="text" name="name">
  <input type="submit" value="أرسل">
</form>

مثال بسيط عن نموذج يُرسَل عبر الطريقة POST:

<form action="" method="post">
  <label for="name">الاسم:</label>
  <input id="name" type="text" name="name">
  <input type="submit" value="أرسل">
</form>

مثال عن نموذج يبيّن استخدام العناصر <fieldset> و <legend> و <label>:

<form action="" method="post">
  <fieldset>
    <legend>النموذج</legend>
    <input type="radio" name="radio" id="radio">
    <label for="radio">اضغط هنا</label>
  </fieldset>
</form>

بطاقة العنصر

تصنيفات المحتوى عنصر تنظيمي.
المحتوى المسموح المحتوى التنظيمي، لكن ما عدا العنصر <form>.
الوسم المختصر لا يمكن حذف أيّ من وسمَي البداية أو النهاية.
العناصر الأب أي عنصر يقبل المحتوى التنظيمي.
واجهة DOM HTMLFormElement

دعم المتصفحات

Chrome Firefox Edge Safari Opera
مدعوم مدعوم مدعوم مدعوم مدعوم

خاصية autocomplete ما تزال غير مدعومة في أغلبية المتصفحات.

الخاصيات

يمكن استخدام الخاصيات العامة في هذا العنصر.

accept

قائمة مفصولة بفاصلة تمثِّل أنواع المحتوى التي يقبلها الخادوم.

يجدر بالذكر أنَّ هذه الخاصية حُذِفَت في HTML5 ولا يجوز استخدامها حديثًا، وإنما استخدم الخاصية accept التابعة لعنصر <input>.

accept-charset

قائمة مفصولة بفاصلة أو بفراغ تمثِّل ترميزات المحارف التي يقبلها الخادوم. سيستخدمها المتصفح بنفس ترتيب ورودها، والقيمة الافتراضية هي السلسلة النصية المحجوزة UNKNOWN التي تُشير إلى أنَّ الترميز هو نفس ترميز المستند الذي يحتوي على النموذج.

كان يُسمَح في الإصدارات السابقة من HTML بفصل ترميزات المحارف بفاصلة أو فراغ، أما في HTML5 فلا يُسمَح إلا بفصلها بفراغات.

مثال عن استخدام الخاصية accept-charset للإشارة إلى أنَّ النموذج يقبل المدخلات بترميز UTF-8 أو ISO-8859-6 (للمحارف العربية):

<form action="" method="get" accept-charset="UTF-8 ISO-8859-6">
  <label for="name">الاسم:</label>
  <input id="name" type="text" name="name">
  <input type="submit" value="أرسل">
</form>

action

رابط URI للبرنامج الذي سيُعالِج معلومات النموذج، وهذه القيمة يمكن تجاوزها عبر الخاصية formaction في عنصر <button> أو <input>.

autocomplete

تُشير هذه الخاصية إن كانت قيمة عناصر النموذج يمكن إكمالها تلقائيًا عبر المتصفح. يمكن تجاوز قيمة هذه الخاصية عبر ضبط الخاصية autocomplete على عناصر النموذج فرادى. القيم الممكنة لهذه الخاصية هي:

  • off: يجب أن يُدخِل المستخدم القيم يدويًا في كل حقل في كل مرة، أو كانت الصفحة تُوفِّر طريقة للإكمال التلقائي للمدخلات بمعزل عن المتصفح، أي أنَّ المتصفح لا يتدخل بموضوع الإكمال التلقائي.
  • on: يمكن للمتصفح إكمال القيم المُدخَلة من المستخدم تلقائيًا اعتمادًا على القيم التي أدخلها المستخدم في المرات السابقة.

في أغلبية المتصفحات الحديثة (بما في ذلك Firefox 38+‎ و Chrome 34+‎ و IE 11+‎) لن يؤدي ضبط الخاصية autocomplete إلى منع مدير كلمات المرور الخاص بالمتصفح من سؤال المستخدم إن كان يريد تخزين معلومات الدخول (اسم المستخدم وكلمة المرور)، إذا سمح المستخدم بذلك فستُملأ معلومات الدخول في المرة القادمة التي يزور فيها المستخدم الصفحة تلقائيًا.

يجدر بالذكر أنَّ هذه الخاصية أضيفت إلى HTML5، ولم تكن موجودةً فيما سبق.

enctype

عندما تكون قيم الخاصية method تساوي posts، فالخاصية enctype تُمثِّل نوع MIME الذي سيستخدم لإرسال محتوى النموذج إلى الخادوم. القيم الممكنة هي:

  • application/x-www-form-urlencoded: القيمة الافتراضية إن لم تُحدَّد قيمة لهذه الخاصية.
  • multipart/form-data: استخدم هذه القيمة إن كنتَ تستعمل العنصر <input> في النموذج وضبطتَ الخاصية type إلى file.
  • text/plain.

يمكن تجاوز هذه القيمة باستخدام الخاصية formenctype في عنصر <button> أو <input>.

سيُرسَل النموذج الآتي كنوع بيانات multipart/form-data:

<form action="" method="post" enctype="multipart/form-data">
  <label for="name">الاسم:</label>
  <input id="name" type="text" name="name">
  <input type="submit" value="أرسل">
</form>

method

ستُحدِّد هذه الخاصية ما هي طريقة الإرسال عبر HTTP (أي HTTP method) التي يجب أن يستعملها المتصفح لإرسال النموذج. القيم الممكنة هي:

  • post: إرسال بيانات النموذج باستخدام طريقة POST، ضمن جسم طلبية HTTP.
  • get: إرسال البيانات عبر طريقة GET، بإسناد بيانات النموذج إلى رابط URI للهدف، مع استعمال الرمز ? لفصل اسم الصفحة عن البيانات، ثم إرسال رابط URI الناتج إلى الخادوم. استخدم هذه الطريقة إن لم تكن هنالك تأثيرات جانبية لنموذجك وكان يحتوي على محارف ASCII فقط.

يمكن تجاوز هذه القيمة باستخدام الخاصية formmethod في عنصر <button> أو <input>.

name

اسم النموذج. كان استخدام هذه الخاصية مهملًا في HTML 4 (وكان يجب استخدام الخاصية id بدلًا من هذه الخاصية). لكن أعيد استخدامها في HTML5 لتمييز النموذج في المستند، وإن حُدِّدَت فيجب أن تكون فريدةً بالنسبة إلى النماذج الأخرى.

novalidate

تُشير هذه الخاصية المنطقية إلى أنَّ على المتصفح ألّا يتحقق من حقول النموذج عند إرساله.

إذا لم تُحدَّد قيمة لهذه الخاصية (أي أنَّ على المتصفح التحقق من حقول النموذج)، فيمكن تجاوز الضبط الافتراضي باستخدام الخاصية formnovalidate على عنصر <button> أو <input> ينتمي إلى النموذج.

لن يتحقق المستخدم من المدخلات في النموذج الآتي لأننا استعملنا فيه الخاصية novalidate:

<form action="" method="get" novalidate>
  <label for="name">الاسم:</label>
  <input id="name" type="text" name="name" required>
  <input type="submit" value="أرسل">
</form>

target

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

الكلمات المحجوزة التالية لها معانٍ خاصة:

  • ‎__self: عرض النتيجة مكان الصفحة الحالية. هذه هي القيمة الافتراضية إذا لم تُحدَّد قيمةٌ أخرى.
  • __blank: عرض الصفحة في نافذة جديدة.
  • __parent: ستعرض الصفحة مكان الصفحة الأب التي ينتمي إليها iframe، وإذا لم تكن هنالك صفحة أب فستسلك هذه القيمة سلوك القيمة ‎__selfنفسه.
  • ‎__top: عرض الصفحة مكان أعلى صفحة في الهيكلية (أي الصفحة التي تكون من الآباء المباشرين أو غير المباشرين للصفحة الحالية وليس لها صفحة أب). إذا لم تكن هنالك صفحة أب فستسلك هذه القيمة سلوك القيمة ‎__self نفسه.

يمكن تجاوز هذه القيمة باستخدام الخاصية formtarget في عنصر <button> أو <input>.

التنسيق الافتراضي

تعرض أغلبية المتصفحات العنصر <form> بضبط الخاصية display إلى block، وإزالة الهامش العلوي margin-top:

form {
  display: block;
  margin-top: 0em;
}

مصادر ومواصفات