آموزش رایگان Vue.js

مدیریت فرم‌ها و ورودی‌ها در Vue.js | آموزش Form Handling با مثال کاربردی

22م آذر 1404 محراب حسن زاده
مدیریت فرم‌ها و ورودی‌ها در 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 با این امکانات، فرآیند توسعه و مدیریت فرم‌ها را سریع و روان‌تر می‌کند.

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

مدیریت ترتیب نمایش با z-index در CSS: آموزش کامل و کاربردی
11م آبان 1403

مدیریت ترتیب نمایش با z-index در CSS: آموزش کامل و کاربردی

مطالعه بیشتر
نصب Vue.js و ایجاد پروژه ساده: آموزش گام‌به‌گام راه‌اندازی Vue
28م شهریور 1402

نصب Vue.js و ایجاد پروژه ساده: آموزش گام‌به‌گام راه‌اندازی Vue

مطالعه بیشتر
واحدهای CSS مدرن: آموزش استفاده از vw، vh، vmin و vmax برای طراحی واکنش‌گرا
11م آبان 1403

واحدهای CSS مدرن: آموزش استفاده از vw، vh، vmin و vmax برای طراحی واکنش‌گرا

مطالعه بیشتر
راهنمای کامل جداول HTML: آموزش ساخت و بهینه‌سازی سئو
21م مرداد 1402

راهنمای کامل جداول HTML: آموزش ساخت و بهینه‌سازی سئو

مطالعه بیشتر
تنظیم عرض و ارتفاع عناصر در CSS: استفاده از width، height، max و min برای کنترل دقیق اندازه‌ها
9م آبان 1403

تنظیم عرض و ارتفاع عناصر در CSS: استفاده از width، height، max و min برای کنترل دقیق اندازه‌ها

مطالعه بیشتر
استفاده از setTimeout و setInterval در جاوا اسکریپت: آموزش کامل و مثال‌ها
29م مهر 1403

استفاده از setTimeout و setInterval در جاوا اسکریپت: آموزش کامل و مثال‌ها

مطالعه بیشتر
آموزش دسترسی به المان‌های HTML با استفاده از جاوا اسکریپت: راهنمای کامل با مثال‌ها
2م آبان 1403

آموزش دسترسی به المان‌های HTML با استفاده از جاوا اسکریپت: راهنمای کامل با مثال‌ها

مطالعه بیشتر
تفاوت Callbacks و Promises در جاوا اسکریپت: مقایسه جامع با مثال‌ها
30م مهر 1403

تفاوت Callbacks و Promises در جاوا اسکریپت: مقایسه جامع با مثال‌ها

مطالعه بیشتر
آموزش CSS Blend Modes: ادغام رنگ‌ها و تصاویر برای طراحی وب جذاب
9م آبان 1403

آموزش CSS Blend Modes: ادغام رنگ‌ها و تصاویر برای طراحی وب جذاب

مطالعه بیشتر
مفهوم برنامه‌نویسی هم‌زمان و ناهم‌زمان در جاوا اسکریپت: تفاوت‌ها، مثال‌ها و کاربردها
29م مهر 1403

مفهوم برنامه‌نویسی هم‌زمان و ناهم‌زمان در جاوا اسکریپت: تفاوت‌ها، مثال‌ها و کاربردها

مطالعه بیشتر
اصول پایه React.js: آشنایی با کامپوننت‌ها، وضعیت و رندرینگ
28م شهریور 1402

اصول پایه React.js: آشنایی با کامپوننت‌ها، وضعیت و رندرینگ

مطالعه بیشتر
آموزش رویدادهای پیشرفته در جاوا اسکریپت: بابلینگ، کپچرینگ و توقف پیش‌فرض - راهنمای جامع
2م آبان 1403

آموزش رویدادهای پیشرفته در جاوا اسکریپت: بابلینگ، کپچرینگ و توقف پیش‌فرض - راهنمای جامع

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد