HTML Academy · درس

عنصر form وaction وmethod وenctype

أعدّ عنصر form باستخدام action وmethod وenctype

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

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

ما هو النموذج؟

تُعد نماذج HTML الطريقة الأساسية لإرسال المستخدمين البيانات إلى الخادم:

  • تسجيل الدخول وإنشاء الحساب
  • استعلامات البحث
  • إتمام الشراء والدفع
  • التواصل وإرسال الملاحظات

يبدأ كل نموذج بالعنصر <form>.

عنصر form

يحيط العنصر <form> بجميع عناصر التحكم في النموذج:

<form action="/submit" method="post">
  <!-- form controls go here -->
  <button type="submit">Send</button>
</form>
<!-- When the user submits, the browser sends the form data
     to the URL specified in action using the method specified -->

السمة action

تحدد السمة action المكان الذي تُرسل إليه بيانات النموذج:

<form action="/api/login">...</form>      <!-- relative path -->
<form action="https://api.example.com/form">...</form>  <!-- absolute -->
<form action="">...</form>                 <!-- current URL (empty) -->
<form>...</form>                           <!-- no action = current URL -->

السمة method

تتحكم السمة method في طريقة إرسال البيانات:

<form method="get">...</form>
<!-- GET: appends data to URL as query string
     example.com/search?q=html&sort=date
     Used for: search forms, filters, bookmarkable results -->

<form method="post">...</form>
<!-- POST: sends data in the request body
     Data is not visible in the URL
     Used for: login, registration, file uploads, sensitive data -->

GET مقابل POST

يختلف GET وPOST في خصائصهما:

  • GET — البيانات في عنوان URL (بطول محدود)، وقابلة لوضع إشارة مرجعية، وقابلة للتخزين المؤقت، وidempotent
  • POST — البيانات في جسم الطلب (بطول غير محدود)، وغير قابلة لوضع إشارة مرجعية، ولا تُخزّن مؤقتًا، وليست idempotent

قاعدة عامة: إذا لم يؤدِّ الإرسال إلى تغيير حالة الخادم، فاستخدم GET؛ وإذا أدّى إلى تغييرها، فاستخدم POST.

السمة enctype

تتحكم السمة enctype في طريقة ترميز بيانات النموذج لطلبات POST:

<!-- Default: URL-encoded (text/form fields) -->
<form method="post" enctype="application/x-www-form-urlencoded">

<!-- For file uploads: multipart -->
<form method="post" enctype="multipart/form-data">
  <input type="file" name="avatar">
</form>

<!-- Plain text (rare): -->
<form method="post" enctype="text/plain">

السمة novalidate

تعطّل السمة novalidate التحقق المضمّن في المتصفح:

<form action="/submit" method="post" novalidate>
  <!-- Validation handled by JavaScript instead -->
  <input type="email" name="email">
  <button type="submit">Submit</button>
</form>

السمة target في النموذج

تتحكم السمة target في مكان عرض الاستجابة:

<form action="/search" target="_blank">
  <!-- Response opens in a new tab -->
</form>
<!-- Values: _blank, _self, _parent, _top, or a frame name -->
<!-- Rarely used — most forms stay on the same page or use AJAX -->

السمة autocomplete في النموذج

تتحكم السمة autocomplete في الملء التلقائي للمتصفح:

<!-- Off: disable autofill for the entire form -->
<form autocomplete="off">

<!-- On (default): allow autofill -->
<form autocomplete="on">

<!-- Better: control at the field level:
<input type="email" autocomplete="email">
<input type="current-password" autocomplete="current-password">
-->

إرسال النموذج باستخدام JavaScript

امنع الإرسال الافتراضي وعالجه باستخدام JavaScript:

<form id="contact-form" action="/contact" method="post">
  <input type="text" name="name">
  <button type="submit">Send</button>
</form>

<script>
document.getElementById('contact-form').addEventListener('submit', async (e) => {
  e.preventDefault();  // stop normal browser submission
  const data = new FormData(e.target);
  const res = await fetch('/contact', { method: 'POST', body: data });
  // handle response...
});
</script>

استخدام action وmethod معًا

مثال كامل على نموذج باستخدام action وmethod الصحيحين:

<form action="/api/newsletter" method="post">
  <label for="email">Email address</label>
  <input type="email" id="email" name="email" required>
  <button type="submit">Subscribe</button>
</form>
<!-- POST because: creating a subscription = server state change -->

تحقق سريع

ما أسلوب النموذج الذي ينبغي استخدامه عند رفع ملف؟

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

أساسيات عنصر النموذج:

  • action — عنوان URL الذي يستقبل بيانات النموذج
  • method="get" — البيانات في عنوان URL (للبحث والمرشحات)
  • method="post" — البيانات في جسم الطلب (للبيانات الحساسة وتغييرات الحالة)
  • enctype="multipart/form-data" — مطلوب لرفع الملفات
  • novalidate — تعطيل التحقق في المتصفح
البدء مجانًا

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

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

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

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

هل درس «عنصر form وaction وmethod وenctype» مجاني؟

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

ماذا ستتعلم في «عنصر form وaction وmethod وenctype»؟

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

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

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

كم من الوقت يستغرق درس «عنصر form وaction وmethod وenctype»؟

معظم دروس 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