HTML Academy · درس

عنصر button: submit وreset وbutton

فعّل إرسال النموذج أو إعادة ضبطه أو الإجراءات المخصّصة باستخدام الأزرار

الدرس 4 من 413 خطوة

عنصر button: submit وreset وbutton درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.

عنصر button

يُعد عنصر <button> الطريقة الأساسية لإنشاء عناصر تحكم قابلة للنقر:

<button type="submit">Submit</button>
<button type="reset">Clear Form</button>
<button type="button">Do Something</button>

<!-- Three types, each with a different default behavior -->
<!-- Always specify type — the default is submit inside forms -->

type=submit

ترسل type="submit" النموذج عند النقر عليها:

<form action="/register" method="post">
  <input type="email" name="email">
  <button type="submit">Create Account</button>
</form>
<!-- Triggers form validation, then sends the form data -->
<!-- Also triggered by pressing Enter in most text inputs -->

type=reset

تمسح type="reset" جميع حقول النموذج وتعيدها إلى قيمها الافتراضية:

<form>
  <input type="text" name="name" value="">  <!-- empty default -->
  <input type="number" name="qty" value="1">  <!-- default: 1 -->
  <button type="reset">Clear</button>
</form>
<!-- Clicking reset restores qty to 1 and clears name -->
<!-- Use sparingly — users often accidentally reset forms -->

type=button

لا تنفّذ type="button" أي إجراء افتراضيًا — أرفق بها JavaScript:

<button type="button" id="toggle-theme">Toggle Dark Mode</button>

<script>
document.getElementById('toggle-theme').addEventListener('click', () => {
  document.body.classList.toggle('dark');
});
</script>
<!-- type="button" prevents accidental form submission
     Always use this for non-submit buttons -->

button مقابل input[type=submit]

يُفضَّل استخدام <button> على <input type="submit">:

<!-- Old way (limited): -->
<input type="submit" value="Submit">

<!-- Modern way (flexible — can contain HTML): -->
<button type="submit">
  <svg><!-- icon --></svg>
  Submit Form
</button>
<!-- button can contain icons, emphasis, and any inline HTML
     input type=submit can only have plain text via the value attribute -->

زر معطّل

عطّل الزر باستخدام السمة disabled:

<button type="submit" disabled>Submit</button>
<!-- Disabled buttons:
  - Cannot be clicked
  - Not in tab order
  - NOT submitted with the form
  - Browser renders them grayed out -->

<!-- Enable/disable with JavaScript: -->
btn.disabled = true;
btn.disabled = false;

نمط حالة التحميل

اعرض حالة التحميل أثناء إرسال النموذج:

<button type="submit" id="submit-btn">
  <span id="btn-text">Submit</span>
  <span id="btn-spinner" hidden aria-hidden="true">⏳</span>
</button>

<script>
form.addEventListener('submit', () => {
  document.getElementById('submit-btn').disabled = true;
  document.getElementById('btn-text').textContent = 'Submitting...';
  document.getElementById('btn-spinner').hidden = false;
  document.getElementById('btn-spinner').removeAttribute('aria-hidden');
});
</script>

تجاوزا formaction وformmethod

تجاوز إجراء النموذج أو طريقته لزر محدد:

<form action="/save" method="post">
  <input type="text" name="title">

  <!-- Save: uses form defaults -->
  <button type="submit">Save Draft</button>

  <!-- Publish: overrides action and method -->
  <button type="submit" formaction="/publish" formmethod="post">
    Publish Now
  </button>
</form>

زر مع ARIA

تحتاج الأزرار المخصّصة إلى ARIA إذا كان مظهرها مختلفًا عن الأزرار الأصلية:

<!-- Icon-only button -->
<button type="button" aria-label="Close dialog">
  <svg aria-hidden="true"><!-- X icon --></svg>
</button>

<!-- Toggle button -->
<button type="button" aria-pressed="false" id="bold-btn">
  Bold
</button>
<script>
document.getElementById('bold-btn').addEventListener('click', function() {
  const pressed = this.getAttribute('aria-pressed') === 'true';
  this.setAttribute('aria-pressed', !pressed);
});
</script>

أفضل ممارسات إتاحة الأزرار

قائمة التحقق من إتاحة الأزرار:

  • حدّد type دائمًا — ولا تعتمد أبدًا على القيمة الافتراضية
  • استخدم aria-label للأزرار التي تحتوي على أيقونة فقط
  • استخدم aria-pressed للأزرار القابلة للتبديل
  • الأزرار المعطّلة: فكّر في استخدام aria-disabled="true" مع JavaScript لإبقائها قابلة للوصول بالتركيز
  • لا تستخدم <div> أو <span> كأزرار أبدًا

مساحة النقر وأهداف اللمس

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

button {
  min-height: 44px;   /* Apple HIG minimum */
  min-width: 44px;    /* WCAG 2.5.5 (AAA) recommends 44x44 -->
  padding: 0.5rem 1rem;
  cursor: pointer;
}

/* Increase tap area without changing visual size: */
button {
  position: relative;
}
button::before {
  content: '';
  position: absolute;
  inset: -8px;
}

اختبار سريع

ماذا يحدث إذا حذفت السمة type من زر داخل نموذج؟

مراجعة: عنصر button

أساسيات الأزرار:

  • type="submit" — يرسل النموذج
  • type="reset" — يعيد جميع الحقول إلى قيمها الافتراضية
  • type="button" — لا سلوك افتراضيًا؛ أرفق به JavaScript
  • حدّد type دائمًا — القيمة الافتراضية هي submit
  • فضّل <button> على <input type="submit">
  • استخدم aria-label للأزرار التي تحتوي على أيقونة فقط
البدء مجانًا

تعلم HTML مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
40
الدروس
159

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

هل درس «عنصر button: submit وreset وbutton» مجاني؟

نعم — نص درس «عنصر button: submit وreset وbutton» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.

ماذا ستتعلم في «عنصر button: submit وreset وbutton»؟

فعّل إرسال النموذج أو إعادة ضبطه أو الإجراءات المخصّصة باستخدام الأزرار تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟

لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «عنصر button: submit وreset وbutton»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟

نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. عنصر form وaction وmethod وenctype
  2. أنواع Input: text وpassword وemail وnumber وtel
  3. عنصر label وإمكانية الوصول
  4. عنصر button: submit وreset وbutton
← العودة إلى HTML Academy