# نموذج Form
اجتماع LhForm + LhFormItem: التحقق من النموذج (required / قواعد مخصصة)، وعرض الأخطاء (role="alert")، وربط aria-invalid لعناصر التحكم التابعة، إضافة إلى validate / resetFields للنموذج بأكمله.
التحقق من النموذج
<template>
<div style="max-width: 640px">
<LhForm ref="form" :model="form" :rules="rules" label-width="80px">
<LhFormItem prop="name" label="الاسم" required>
<LhInput v-model="form.name" placeholder="يرجى إدخال الاسم" />
</LhFormItem>
<LhFormItem prop="genre" label="الموضوع">
<LhSelect v-model="form.genre" :options="genres" placeholder="يرجى الاختيار" />
</LhFormItem>
<LhFormItem>
<LhButton type="primary" @click="submit">إرسال</LhButton>
<LhButton @click="reset">إعادة ضبط</LhButton>
</LhFormItem>
</LhForm>
<p class="demo-note">نتيجة الإرسال: {{ result }}</p>
<p class="demo-note" style="margin-top: 16px">label-position="top":</p>
<LhForm :model="form2" label-position="top">
<LhFormItem prop="name" label="الاسم">
<LhInput v-model="form2.name" placeholder="التسمية في الأعلى" />
</LhFormItem>
</LhForm>
<p class="demo-note" style="margin-top: 16px">inline نموذج سطري:</p>
<LhForm :model="form3" inline>
<LhFormItem prop="name" label="الاسم">
<LhInput v-model="form3.name" placeholder="سطري" />
</LhFormItem>
<LhFormItem prop="genre" label="الموضوع">
<LhSelect v-model="form3.genre" :options="genres" placeholder="سطري" />
</LhFormItem>
</LhForm>
</div>
</template>
<script>
export default {
data: () => ({
form: { name: '', genre: '' },
form2: { name: '' },
form3: { name: '', genre: '' },
rules: { name: [{ required: true, message: '' }] },
genres: [
{ value: 'shan', label: 'مناظر طبيعية' },
{ value: 'hua', label: 'طيور وزهور' },
],
result: '(لم يُرسل)',
}),
methods: {
submit() {
const form = this.$refs.form
form.validate().then((ok) => {
this.result = ok ? 'اجتاز التحقق ✓' : 'فشل التحقق: الاسم مطلوب'
})
},
reset() {
this.$refs.form.resetFields()
this.result = '(تمت إعادة الضبط)'
},
},
}
</script>
# Form Props
| خاصية | الوصف | النوع | الافتراضي |
|---|---|---|---|
| model | نموذج البيانات (مطلوب) | Record<string, unknown> | — |
| rules | قواعد التحقق (المفاتيح هي مسارات prop) | Record<string, LhFormRule[]> | — |
| labelPosition | موضع التسمية | 'left' \| 'right' \| 'top' | 'right' |
| labelWidth | عرض التسمية | string \| number | — |
| inline | تخطيط سطري | boolean | false |
# FormItem Props
| خاصية | الوصف | النوع | الافتراضي |
|---|---|---|---|
| prop | مسار الحقل في model الموافق (يدعم المسارات العميقة مثل a.b) | string | — |
| label / required / rules | التسمية، وعلامة required، والقواعيد المحلية (تُدمج مع قواعد form) | — | — |
# الطرق
| طريقة | الوصف |
|---|---|
validate() | التحقق من جميع الحقول (العناصر المسجَّلة + عناصر تجاوز rules)، ويُعيد Promise<boolean> |
validateField(prop) | التحقق من حقل واحد |
resetFields() / resetField(prop) | العودة إلى القيم الأولية (تُلتقط لقطة عند التركيب وفق مفاتيح rules) |
تلميح
ربط فشل التحقق لعناصر النموذج تلقائي: يُحقن عنصر التحكم في سياق LhFormItem، وعندما لا يكون errorMessage فارغاً يُعرض aria-invalid دون الحاجة إلى ربط يدوي.
Copyright © 2024-2026 FengMo WenXue