العنصر <button>
يُمثِّل العنصر <button>
زرًا قابلًا للضغط.
مثال عن استخدام العنصر <button>
:
<button name="button">اضغط هنا</button>
بطاقة العنصر
تصنيفات المحتوى | عنصر تنظيمي وعنصر عادي، وعنصر تفاعلي ... |
---|---|
المحتوى المسموح | المحتوى العادي. |
الوسم المختصر | لا يمكن حذف أيّ من وسمَي البداية أو النهاية. |
العناصر الأب | أي عنصر يقبل المحتوى العادي. |
واجهة DOM | HTMLButtonElement
|
دعم المتصفحات
Chrome | Firefox | Edge | Safari | Opera |
---|---|---|---|---|
مدعوم | مدعوم | مدعوم | مدعوم | مدعوم |
الخاصيات
يمكن استخدام الخاصيات العامة في هذا العنصر.
autofoucs
تسمح لنا هذه الخاصية المنطقية (Boolean) بتحدد أنَّنا نريد أن ينتقل التركيز (focus) إلى هذا الزر عند تحميل الصفحة ما لم يغيّره المستخدم (مثل الكتابة في عنصر إدخال مختلف).
لا يمكن أن تُستعمَل هذه الخاصية إلا في عنصر واحد فقط مرتبط بالنماذج في المستند.
مثال عن استخدام الخاصية autofoucs
للتركيز التلقائي على هذا الزر عند إكمال المتصفح تحميل الصفحة:
<button name="button" autofocus>اضغط هنا</button>
disabled
تُشير هذه الخاصية المنطقية (Boolean) إلى أنَّ المستخدم لا يستطيع التفاعل مع هذا الزر، وإذا لم تُحدَّد قيمة لهذه الخاصية فسترث قيمتها من العنصر الحاوي لها مثل العنصر <fieldset>
، وإذا لم يكن هنالك عنصرٌ حاوٍ لهذا العنصر له الخاصية disabled
، فسيكون الزر مفعّلًا.
مثال عن استخدام الخاصية disabled
لتعطيل هذا الزر افتراضيًا:
<button name="button" disabled>لا يمكنك الضغط هنا</button>
form
تُحدِّد هذه الخاصية ما هو النموذج الذي ينتمي هذا الزر إليه، ويجب أن تكون قيمة هذه الخاصية هي مُعرِّف id
لعنصر <form>
في المستند نفسه.
إن لم تُحدَّد قيمة هذه الخاصية فسيرتبط الزر مع عنصر <form>
الأب له إن وجد.
تسمح لك هذه الخاصية بربط عناصر <button>
إلى عناصر <form>
الموجودة في أي مكان في المستند، لكن لا يجوز أن يرتبط عنصر <button>
موجود ضمن عنصر <form>
إلى عنصر <form>
آخر.
مثال عن استخدام الخاصية form
لتحديد أنَّ هذا الزر ينتمي إلى النموذج ذي المُعرِّف form1
:
<form action="action_page.php" method="get" id="form1">
الاسم: <input type="text" name="name">
</form>
<button type="submit" form="form1">إرسال</button>
fromaction
رابط URI للبرنامج الذي يُعالِج المعلومات المُرسَلة عبر هذا الزر.
إذا حُدِّدَت قيمة لهذه الخاصية فستتجاوز القيمة الموجودة في الخاصية action
للنموذج الذي يتبع هذا الزر له.
مثال عن استخدام الخاصية fromaction
لتغيير الصفحة التي ستعالج بيانات هذا النموذج، مع استخدام الخاصية form
كمّا بيّنا سابقًا:
<form action="action_page.php" method="get" id="form1">
الاسم: <input type="text" name="name">
</form>
<button type="submit" form="form1">إرسال</button>
<button type="submit" form="form1" formaction="action_page2.php">الإرسال إلى الصفحة الثانية</button>
formenctype
إذا كان هذا الزر هو زر الإرسال (submit button) فستُحدِّد هذه الخاصية ما هو نوع المحتوى التي سيُستخدَم لإرسال بيانات النموذج إلى الخادوم. القيم الممكنة هي:
application/x-www-form-urlencoded
: القيمة الافتراضية إن لم تُحدَّد قيمة لهذه الخاصية.multipart/form-data
: استخدم هذه القيمة إن كنتَ تستعمل العنصر<input>
في النموذج وضبطتَ الخاصيةtype
إلىfile
.text/plain
.
إذا حُدِّدَت قيمة لهذه الخاصية فستتجاوز القيمة الموجودة في الخاصية enctype
للنموذج الذي يتبع هذا الزر له.
formmethod
إذا كان هذا الزر هو زر الإرسال (submit button) فستُحدِّد هذه الخاصية ما هي طريقة الإرسال عبر HTTP (أي HTTP method) التي يجب أن يستعملها المتصفح لإرسال النموذج. القيم الممكنة هي:
post
: إرسال بيانات النموذج ضمن جسم طلبية HTTP.get
: إسناد بيانات النموذج إلى رابط URI للهدف، مع استعمال الرمز?
لفصل اسم الصفحة عن البيانات، ثم إرسال رابط URI الناتج إلى الخادوم. استخدم هذه الطريقة إن لم تكن هنالك تأثيرات جانبية لنموذجك وكان يحتوي على محارف ASCII فقط.
إذا حُدِّدَت هذه الخاصية فستتجاوز القيمة الموجودة في الخاصية method
للنموذج الذي يتبع له هذا الرز.
مثال عن استخدام الخاصية formmethod
لتغيير الطريقة التي ستُرسَل بها بيانات هذا النموذج، مع استخدام الخاصية form
والخاصية formaction
كمّا بيّنا سابقًا:
<form action="action_page.php" method="get" id="form1">
الاسم: <input type="text" name="name">
</form>
<button type="submit" form="form1">إرسال</button>
<button type="submit" form="form1" formaction="action_page2.php" formmethod="post">الإرسال إلى الصفحة الثانية باستخدام POST</button>
formnovalidate
إذا كان الزر هو زر إرسال، فهذه القيمة المنطقية تقول أنَّ على المتصفح عدم التحقق من صحة الحقول في النموذج. وإذا حُدِّدَت قيمة لهذه الخاصية فستتجاوز القيمة الموجودة في الخاصية novalidate
للنموذج الذي يتبع هذا الزر له.
مثال عن استخدام الخاصية formnovalidate
كي لا يتحقق المتصفح من بيانات هذا النموذج، مع استخدام الخاصية form
كمّا بيّنا سابقًا:
<form action="action_page.php" method="get" id="form1">
الاسم: <input type="text" name="name" required>
</form>
<button type="submit" form="form1">إرسال</button>
<button type="submit" form="form1" formnovalidate>الإرسال دون تحقق</button>
formtarget
إذا كان الزر هو زر إرسال، فهذه الخاصية تأخذ كلمةً محجوزةً تشير إلى المكان الافتراضي لعرض الناتج عندما تُسبِّب الروابط أو عناصر النماذج بالانتقال إلى صفحةٍ أخرى وذلك إذا لم تُحدِّد تلك العناصر قيمةً خاصةً لهذه الخاصية. إذا حُدِّدَت قيمة لهذه الخاصية فستتجاوز القيمة الموجودة في الخاصية target
للنموذج الذي يتبع هذا الزر له.
الكلمات المحجوزة التالية لها معانٍ خاصة:
__self
: عرض النتيجة مكان الصفحة الحالية. هذه هي القيمة الافتراضية إذا لم تُحدَّد قيمةٌ أخرى.-
__blank
: عرض الصفحة في نافذة جديدة. -
__parent
: ستعرض الصفحة مكان الصفحة الأب التي ينتمي إليها iframe، وإذا لم تكن هنالك صفحة أب فستسلك هذه القيمة سلوك القيمة __self
نفسه. __top
: عرض الصفحة مكان أعلى صفحة في الهيكلية (أي الصفحة التي تكون من الآباء المباشرين أو غير المباشرين للصفحة الحالية وليس لها صفحة أب). إذا لم تكن هنالك صفحة أب فستسلك هذه القيمة سلوك القيمة __self
نفسه.
name
اسم الزر، والذي سيُرسَل مع بيانات النموذج.
type
نوع الزر، وتأخذ هذه الخاصية إحدى القيم الآتية:
submit
: سيؤدي الضغط على هذا الزر إلى إرسال بيانات النموذج إلى الخادوم، وهذه هي القيمة الافتراضية إن لم تُحدَّد قيمةٌ أخرى، أو إذ غُيّرَت القيمة ديناميكيًا إلى قيمة فارغة أو غير صالحة.reset
: سيؤدي الضغط على هذا الزر إلى إعادة ضبط جميع عناصر النموذج إلى قيمها الابتدائية.button
: لن يكون لهذا الزر سلوكٌ افتراضي، وإنما قد ترتبط به شيفرات برمجية مكتوبة بلغة برمجة مثل JavaScript تُنفَّذ عند وقوع حدث الضغط.menu
: هذا الزر سيفتح قائمة منبثقة مُعرَّفة عبر عنصر<menu>
.
value
القيمة الابتدائية للزر، وهي تُعرِّف القيمة التي سترتبط بالزر عند إرسال بيانات النموذج، التي ستُمرَّر إلى الخادوم.
ملاحظات
إنَّ تنسيق عناصر <button>
أسهل بكثير من تنسيق عناصر <input>
، إذ تستطيع إضافة محتوى HTML داخلها مثل <em>
و <strong>
وحتى العنصر <img>
، ويمكنك استخدام العناصر الزائفة ::after
و ::before
لكي تعرض العنصر كما تشاء، بينما عناصر <input>
لا تقبل إلا القيم النصية.
مصادر ومواصفات
- معيار HTML Living Standard.
- مواصفة HTML5.
- مواصفة HTML 4.01.