مدیریت فرمها و ورودیها در Vue.js | آموزش Form Handling با مثال کاربردی
مدیریت فرمها و ورودیها در Vue.js یکی از اصلیترین بخشهای ساخت برنامههای تعاملی و کاربردی است. Vue.js با قابلیتهای ویژهای مانند v-model و ابزارهای کنترل ورودی، فرآیند مدیریت و اعتبارسنجی فرمها را ساده و کارآمد میسازد. در این مقاله، با نحوه مدیریت فرمها و ورودیها در Vue.js آشنا میشویم.
استفاده از v-model برای مدیریت دوطرفه دادهها
Vue.js از v-model برای اتصال دوطرفه دادهها (two-way data binding) استفاده میکند. با استفاده از v-model میتوانید دادهها را به عناصر ورودی متصل کرده و به طور خودکار هر تغییری در ورودیها را در دادههای Vue.js ذخیره کنید.
مثال ساده:
< div id = " app " >
< input type = " text " v-model = " name " >
< p > Welcome, { { name } } ! < / p >
< / div >
new Vue ( {
el : ' #app ' ,
data ( ) {
return {
name : ' '
} ;
}
} ) ;
در این مثال، هر تغییری در ورودی input به صورت خودکار در متغیر name ذخیره میشود و Vue.js این تغییر را در DOM نیز نمایش میدهد.
کار با ورودیهای مختلف
v-model را میتوان به انواع مختلفی از ورودیها اعمال کرد:
ورودی متنی ( < input type = " text " > )
چکباکس (< input type = " checkbox " >)
دکمههای رادیویی (< input type = " radio " >)
لیست کشویی (< select >)
مثال برای انواع مختلف ورودیها:
< div id = " app " >
< input type = " text " v-model = " textValue " placeholder = " Enter text " >
< input type = " checkbox " v-model = " isChecked " > Accept terms
< input type = " radio " v-model = " picked " value = " Option A " > Option A
< input type = " radio " v-model = " picked " value = " Option B " > Option B
< select v-model = " selected " >
< option disabled value = " " > Please select one < / option >
< option > A < / option >
< option > B < / option >
< option > C < / option >
< / select >
< p > Text: { { textValue } } < / p >
< p > Accepted: { { isChecked } } < / p >
< p > Picked: { { picked } } < / p >
< p > Selected: { { selected } } < / p >
< / div >
new Vue ( {
el : ' #app ' ,
data ( ) {
return {
textValue : ' ',
isChecked : false ,
picked : ' ',
selected : ' '
} ;
}
} ) ;
در این مثال، v-model هر یک از این ورودیها را به دادههای مربوطه متصل میکند و تغییرات بهطور خودکار در Vue ذخیره میشوند.
اعتبارسنجی فرمها با Vue.js
اعتبارسنجی فرمها برای اطمینان از ورود دادههای درست ضروری است. میتوانید اعتبارسنجی سادهای را مستقیماً در Vue پیادهسازی کنید یا از کتابخانههایی مانند Vuelidate و VeeValidate برای اعتبارسنجی پیشرفتهتر استفاده کنید.
مثال اعتبارسنجی ساده:
< div id = " app " >
< form @submit.prevent = " handleSubmit " >
< input type = " text " v-model = " username " placeholder = " Username " >
< span v-if = " username.length < 3 " > Username must be at least 3 characters < / span >
< input type = " password " v-model = " password " placeholder = " Password " >
< span v-if = " password.length < 6 " > Password must be at least 6 characters < / span >
< button type = " submit " :disabled = " !isFormValid " > Submit < / button >
< / form >
< / div >
new Vue ( {
el : ' #app ' ,
data ( ) {
return {
username : ' ' ,
password : ' '
} ;
} ,
computed : {
isFormValid ( ) {
return this.username.length >= 3 && this.password.length >= 6 ;
}
} ,
methods : {
handleSubmit ( ) {
alert ( ' Form submitted! ' ) ;
}
}
} ) ;
در این مثال:
از computed property برای اعتبارسنجی استفاده شده است تا وضعیت isFormValid بر اساس شرایط اعتبارسنجی تنظیم شود.
اگر اعتبارسنجی شکست بخورد، پیام هشدار برای هر فیلد به نمایش درمیآید و دکمه ارسال غیرفعال میشود.
کار با فرمهای پیچیدهتر و چند دادهای
در فرمهای بزرگتر، به جای اتصال مستقیم به فیلدهای داده، میتوانید از یک شیء برای مدیریت دادههای فرم استفاده کنید. این روش سازماندهی بهتری برای دادهها و مدیریت آسانتر آنها فراهم میآورد.
مثال فرم پیچیده:
< div id = " app " >
< form @submit.prevent = " handleSubmit " >
< label for = " name " > Name: < / label >
< input type = " text " v-model = " form.name " id = " name " >
< label for = " email " > Email: < / label >
< input type = " email" v-model = " form.email " id = " email " >
< label for = " age " > Age: < / label >
< input type = " number " v-model = " form.age " id = " age " >
< button type = " submit " > Submit < / button >
< / form >
< p > { { form } } < / p >
< / div >
new Vue ( {
el : ' #app ' ,
data ( ) {
return {
form : {
name : ' ' ,
email : ' ' ,
age : null
}
} ;
} ,
methods : {
handleSubmit ( ) {
console.log ( this.form ) ;
alert ( ' Form submitted! ' ) ;
}
}
} ) ;
در این مثال، تمامی فیلدهای فرم به داده form متصل شدهاند و مقادیر آنها به صورت یک شیء واحد در form مدیریت میشوند.
ریست کردن فرمها
گاهی نیاز دارید که پس از ارسال فرم، مقادیر آن به حالت اولیه بازگردد. برای این کار، میتوانید مقادیر data را به صورت دستی بازنشانی کنید.
مثال ریست کردن فرم:
methods : {
handleSubmit ( ) {
alert ( ' Form submitted! ' ) ;
this.resetForm ( ) ;
} ,
resetForm ( ) {
this.form.name = ' ' ;
this.form.email = ' ' ;
this.form.age = null ;
}
}
در این مثال، پس از ارسال فرم، متد resetForm اجرا میشود و دادههای فرم را به مقادیر اولیه بازنشانی میکند.
استفاده از v-model.lazy برای ورود کاراکتر به کاراکتر
بهطور پیشفرض، v-model با هر ورودی کاربر (مثلا تایپ یک کاراکتر) دادهها را بهروزرسانی میکند. اما گاهی نیاز دارید این بهروزرسانی را تا زمان خروج از فیلد (blur) به تعویق بیندازید. در این صورت، میتوانید از .lazy استفاده کنید.
مثال استفاده از v-model.lazy:
< input type = " text " v-model.lazy = " username " >
در این مثال، مقدار username تنها زمانی بهروزرسانی میشود که کاربر فیلد را ترک کند، نه با هر کاراکتر جدید.
نتیجهگیری
مدیریت فرمها و ورودیها در Vue.js با استفاده از v-model و سایر ابزارهای آن بسیار ساده و کارآمد است. با توانایی اعتبارسنجی و مدیریت دوطرفه دادهها، میتوانید فرمهای پیچیدهای را در پروژههای خود ایجاد کنید و تجربه کاربری بهتری فراهم آورید. Vue.js با این امکانات، فرآیند توسعه و مدیریت فرمها را سریع و روانتر میکند.
پرسش و پاسخ
نظری یافت نشد
برای ارسال نظر ابتدا وارد شوید