Vue.js-کابردها-کتابخانه جاوااسکریپتدوره رایگان-الگوریتم اول-free-آموزش کامل

لطفا صبر کنید...

مدیریت فرم‌ها در Vue.js

مدیریت فرم‌ها در Vue.js با استفاده از داده‌های واکنشی و دستورات بایندینگ (v-model) بسیار ساده و کارآمد است. Vue به شما امکان می‌دهد فرم‌ها را به‌صورت پویا مدیریت کنید و اعتبارسنجی‌های لازم را اعمال نمایید.

1. استفاده از v-model برای بایندینگ داده‌ها

v-model مقدار یک ورودی را به متغیر همگام‌سازی دوطرفه (Two-Way Binding) می‌کند.

<template>
  <div>
    <input type="text" v-model="name" placeholder="نام خود را وارد کنید" />
    <p>نام شما: {{ name }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: ""
    };
  }
};
</script>

2. مدیریت چندین ورودی فرم

Vue می‌تواند انواع ورودی‌های فرم را مدیریت کند، از جمله:
ورودی متنی، چک‌باکس، رادیو، انتخابگر (select) و تکست‌اریا.

<template>
  <div>
    <label>نام:</label>
    <input v-model="formData.name" type="text" />

    <label>ایمیل:</label>
    <input v-model="formData.email" type="email" />

    <label>جنسیت:</label>
    <input v-model="formData.gender" type="radio" value="مرد" /> مرد
    <input v-model="formData.gender" type="radio" value="زن" /> زن

    <label>علاقه‌مندی‌ها:</label>
    <input v-model="formData.hobbies" type="checkbox" value="ورزش" /> ورزش
    <input v-model="formData.hobbies" type="checkbox" value="موسیقی" /> موسیقی

    <label>کشور:</label>
    <select v-model="formData.country">
      <option value="ایران">ایران</option>
      <option value="آلمان">آلمان</option>
      <option value="آمریکا">آمریکا</option>
    </select>

    <button @click="submitForm">ارسال</button>

    <pre>{{ formData }}</pre>
  </div>
</template>

<script>
export default {
  data() {
    return {
      formData: {
        name: "",
        email: "",
        gender: "",
        hobbies: [],
        country: ""
      }
    };
  },
  methods: {
    submitForm() {
      console.log("اطلاعات فرم:", this.formData);
      alert("فرم ارسال شد!");
    }
  }
};
</script>

3. کنترل ارسال فرم با prevent

با submit.prevent@ می‌توان از رفرش شدن صفحه هنگام ارسال فرم جلوگیری کرد.

<template>
  <form @submit.prevent="submitForm">
    <input v-model="name" type="text" placeholder="نام" />
    <button type="submit">ارسال</button>
  </form>
</template>

<script>
export default {
  data() {
    return { name: "" };
  },
  methods: {
    submitForm() {
      alert(`نام ارسال شد: ${this.name}`);
    }
  }
};
</script>

4. اعتبارسنجی (Validation) داده‌ها

می‌توان داده‌های فرم را قبل از ارسال بررسی کرد.

<template>
  <div>
    <input v-model="email" type="email" placeholder="ایمیل" />
    <p v-if="emailError" style="color: red">{{ emailError }}</p>

    <button @click="validateForm">ارسال</button>
  </div>
</template>

<script>
export default {
  data() {
    return { email: "", emailError: "" };
  },
  methods: {
    validateForm() {
      if (!this.email.includes("@")) {
        this.emailError = "ایمیل معتبر نیست!";
      } else {
        this.emailError = "";
        alert("فرم با موفقیت ارسال شد!");
      }
    }
  }
};
</script>

5. مدیریت فرم‌های داینامیک

گاهی لازم است تعداد فیلدها به‌صورت داینامیک اضافه شود.

<template>
  <div>
    <button @click="addField">افزودن فیلد</button>
    <div v-for="(item, index) in fields" :key="index">
      <input v-model="item.value" placeholder="مقدار وارد کنید" />
      <button @click="removeField(index)">❌</button>
    </div>
    <button @click="submitForm">ارسال</button>
    <pre>{{ fields }}</pre>
  </div>
</template>

<script>
export default {
  data() {
    return { fields: [{ value: "" }] };
  },
  methods: {
    addField() {
      this.fields.push({ value: "" });
    },
    removeField(index) {
      this.fields.splice(index, 1);
    },
    submitForm() {
      console.log("داده‌های فرم:", this.fields);
    }
  }
};
</script>

جمع‌بندی

v-model برای بایندینگ دوطرفه استفاده می‌شود.
چندین نوع ورودی مانند متن، رادیو، چک‌باکس، و انتخابگر پشتیبانی می‌شوند.
✔ با prevent می‌توان از ارسال ناخواسته فرم جلوگیری کرد.
اعتبارسنجی داده‌ها قبل از ارسال انجام می‌شود.
فرم‌های داینامیک برای افزودن یا حذف ورودی‌ها مدیریت می‌شوند.