عنصر form وaction وmethod وenctype
أعدّ عنصر form باستخدام action وmethod وenctype
عنصر 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عنصر form وaction وmethod وenctype
- أنواع Input: text وpassword وemail وnumber وtel
- عنصر label وإمكانية الوصول
- عنصر button: submit وreset وbutton