Vue Form Inputs

রেডিও বোতাম, চেকবক্স, ড্রপ-ডাউন তালিকা এবং পাঠ্য ইনপুট ক্ষেত্র

Vue ফর্ম ইনপুট

এর আগে এই টিউটোরিয়ালে আমরা Vue ফর্ম এবং v-মডেল পৃষ্ঠাগুলিতে ফর্ম ইনপুট উদাহরণ দেখেছি।

এই পৃষ্ঠাটি Vue-তে আরও ফর্ম ইনপুট উদাহরণগুলির একটি সংগ্রহ, যেমন রেডিও বোতাম, চেকবক্স, একটি ড্রপ-ডাউন তালিকা এবং একটি সাধারণ পাঠ্য ইনপুট ক্ষেত্র৷

Vue ডেটা

inpText: "Initial text"
দ্বিমুখী বাঁধাই

ফর্ম ইনপুট

<input v-model="inpText">

রেডিও বোতাম

একই নির্বাচনের অন্তর্গত রেডিও বোতামের একই নাম থাকতে হবে যাতে শুধুমাত্র একটি রেডিও বোতাম নির্বাচন করা যায়।

Vue-এর সমস্ত ইনপুটের মতো, আমরা ভি-মডেল দিয়ে রেডিও বোতাম ইনপুট মান ক্যাপচার করি, কিন্তু মান বৈশিষ্ট্য<input type="radio">ট্যাগে স্পষ্টভাবে সেট করা আবশ্যক।

Vue ফর্মে রেডিও বোতামগুলি কীভাবে ব্যবহার করবেন:

🎯উদাহরণ

আপনার নিজস্ব Vue সার্ভার পান

App.vue:

<template>
  <h1>Radio Buttons in Vue</h1>
  <form @submit.prevent="registerAnswer">
    <p>What is your favorite animal?</p>
    <label>
      <input type="radio" name="favAnimal" v-model="inpVal" value="Cat"> Cat
    </label>
    <label>
      <input type="radio" name="favAnimal" v-model="inpVal" value="Dog"> Dog
    </label>
    <label>
      <input type="radio" name="favAnimal" v-model="inpVal" value="Turtle"> Turtle
    </label>
    <label>
      <input type="radio" name="favAnimal" v-model="inpVal" value="Moose"> Moose
    </label>
    <button type="submit">Submit</button>
  </form>
  <div>
    <h3>Submitted choice:</h3>
    <p id="pAnswer">{{ inpValSubmitted }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      inpVal: '',
      inpValSubmitted: 'Not submitted yet'
    }
  },
  methods: {
    registerAnswer() {
      if(this.inpVal) {
        this.inpValSubmitted = this.inpVal;
      }
    }
  }
}
</script>

রেডিও বোতাম

চেকবক্স

চেকবক্স এন্ট্রি (<input type="checkbox">) একই ক্রমে v-মডেলের সাথে সংযুক্ত হলে, নির্বাচিত চেকবক্সের মানগুলি সেই ক্রমে সংগ্রহ করা হয়:

<template>
  <h1>Checkbox Inputs in Vue</h1>
  <form @submit.prevent="registerAnswer">
    <p>What kinds of food do you like?</p>
    <label>
      <input type="checkbox" v-model="likeFoods" value="Pizza"> Pizza
    </label>
    <label>
      <input type="checkbox" v-model="likeFoods" value="Rice"> Rice
    </label>
    <label>
      <input type="checkbox" v-model="likeFoods" value="Fish"> Fish
    </label>
    <label>
      <input type="checkbox" v-model="likeFoods" value="Salad"> Salad
    </label>
    <button type="submit">Submit</button>
  </form>
  <div>
    <h3>Submitted answer:</h3>
    <p id="pAnswer">{{ inpValSubmitted }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      likeFoods: [],
      inpValSubmitted: 'Not submitted yet'
    }
  },
  methods: {
    registerAnswer() {
      this.inpValSubmitted = this.likeFoods;
    }
  }
}
</script>

💡রেডিও বনাম চেকবক্স:

রেডিও বোতাম:একক নির্বাচনের জন্য - মানটি একটি স্ট্রিং
চেকবক্স:একাধিক নির্বাচনের জন্য - মানগুলির একটি অ্যারে

<select multiple>

<select>ট্যাগের একাধিক বৈশিষ্ট্য সহ, ড্রপ-ডাউন তালিকা প্রসারিত হয় এবং আপনি একাধিক বিকল্প বেছে নিতে পারেন।

একাধিক বিকল্প নির্বাচন করতে, উইন্ডোজ ব্যবহারকারীদের অবশ্যই 'ctrl' কী টিপতে হবে এবং macOS ব্যবহারকারীদের অবশ্যই 'কমান্ড' কী টিপতে হবে।

<template>
  <h1>Select Multiple in Vue</h1>
  <p>Depending on your operating system, use the 'ctrl' or the 'command' key to select multiple options.</p>
  <form @submit.prevent="registerAnswer">
    <label for="cars">Choose one or more cars:</label><br>
    <select  v-model="carsSelected" id="cars" multiple>
      <option>Volvo</option>
      <option>Saab</option>
      <option>Opel</option>
      <option>Audi</option>
      <option>Kia</option>
    </select>
    <button type="submit">Submit</button>
  </form>
  <div>
    <h3>Submitted answer:</h3>
    <p id="pAnswer">{{ inpValSubmitted }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      carsSelected: [],
      inpValSubmitted: 'Not submitted yet'
    }
  },
  methods: {
    registerAnswer() {
      if(this.carsSelected) {
        this.inpValSubmitted = this.carsSelected;
      }
    }
  }
}
</script>

Vue ফর্ম ইনপুট টিউটোরিয়াল

ইনপুট 'inpText' ডেটা অ্যাট্রিবিউট দিয়ে দ্বি-মুখী বাইন্ডিং পেতে অনুপস্থিত কোডটি পূরণ করুন।

✏️Vue ফর্ম ইনপুট টিউটোরিয়াল

<template>
  <input type="text" _____>
  <p> {{ inpText }} </p>
</template>

<script>
  const app = Vue.createApp({
    data() {
      return {
        inpText: 'Initial text'
      }
    }
  })
  app.mount('#app')
</script>

নীচের বিকল্পগুলি থেকে সঠিক উত্তর চয়ন করুন:

value="inpText"
✗ ভুল! মান বৈশিষ্ট্য একটি ধ্রুবক মান সেট করে, কিন্তু কোন দ্বিমুখী বাঁধাই নেই
v-model="inpText"
✓ ঠিক আছে! V- মডেল হল Vue-তে দ্বি-মুখী ডেটা বাইন্ডিংয়ের সঠিক উপায়। এটি ইনপুট এবং Vue ডেটা সম্পত্তির মধ্যে দ্বিমুখী যোগাযোগ তৈরি করে
:value="inpText"
✗ ভুল! :value একটি একমুখী বাঁধাই তৈরি করে (ডেটা থেকে ইনপুট পর্যন্ত), কিন্তু দ্বিমুখী নয়
@input="inpText"
✗ ভুল! @input একটি ইভেন্ট শ্রোতা, কিন্তু এটি স্বয়ংক্রিয়ভাবে একটি দ্বি-মুখী বাঁধাই তৈরি করে না

শুধুমাত্র পঠনযোগ্য ফর্ম এন্ট্রি

ফর্ম ইনপুটগুলিতে ভি-মডেল ব্যবহার করা একটি দ্বি-মুখী বাঁধাই তৈরি করে, যার অর্থ Vue ডেটা উদাহরণ পরিবর্তন হলে, ইনপুট মান বৈশিষ্ট্যও পরিবর্তিত হয়।

শুধুমাত্র পঠনযোগ্য ফর্ম এন্ট্রির জন্য,<input type="file">যেমন, Vue ডেটা ইনস্ট্যান্স থেকে মান বৈশিষ্ট্য পরিবর্তন করা যাবে না, তাই আমরা v-মডেল ব্যবহার করতে পারি না।

শুধুমাত্র পঠনযোগ্য ফর্ম এন্ট্রির জন্য,<input type="file">ইত্যাদি, ডেটা ইনস্ট্যান্স আপডেট করার জন্য একটি পদ্ধতি কল করতে Vue-এর @change ব্যবহার করা উচিত:

<template>
  <h1>Input Type File</h1>
  <form @submit.prevent="registerAnswer">
    <label>Choose a file:
      <input @change="updateVal" type="file">
    </label>
    <button type="submit">Submit</button>
  </form>
  <div>
    <h3>Submitted answer:</h3>
    <p id="pAnswer">{{ inpValSubmitted }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fileInp: null,
      inpValSubmitted: 'Not submitted yet'
    }
  },
  methods: {
    registerAnswer() {
      if(this.fileInp) {
        this.inpValSubmitted = this.fileInp;
      }
    },
    updateVal(e) {
      this.fileInp = e.target.value;
    }
  }
}
</script>

ℹ️তথ্য:

উপরের উদাহরণে, জমা দেওয়া ফাইলের নামটি ফাইলের পাথ C:\fakepath\ এর আগে পায়। এটি ব্যবহারকারীর ফাইল গঠন অনুমান থেকে ক্ষতিকারক সফ্টওয়্যার প্রতিরোধ করা হয়.

অন্যান্য ফর্ম এন্ট্রি

উপরে উল্লিখিত ফর্ম ইনপুটগুলির সাথে, আমাদের মান অ্যাট্রিবিউটের জন্য একটি মান সরবরাহ করতে হয়েছিল, তবে নীচের ফর্ম ইনপুটগুলির সাথে, ব্যবহারকারী মানটি সরবরাহ করে:

রঙ

<input type="color" v-model="colorInp">

তারিখ

<input type="date" v-model="dateInp">

সীমা

<input type="range" v-model="rangeInp">

না

<input type="number" v-model="numInp">

পাসওয়ার্ড

<input type="password" v-model="passInp">

অনুসন্ধান

<input type="search" v-model="searchInp">

টেলিফোন

<input type="tel" v-model="telInp">

সময়

<input type="time" v-model="timeInp">

যেহেতু ব্যবহারকারী ইতিমধ্যেই এই ধরনের ফর্ম ইনপুটগুলির জন্য একটি মান নির্ধারণ করে, তাই আমাদের Vue-তে যা করতে হবে তা হল ইনপুটটিকে ভি-মডেলের একটি ডেটা বৈশিষ্ট্যের সাথে সংযুক্ত করা।

Textarea ইনপুট

<textarea>মাল্টি-লাইন টেক্সট ইনপুটের জন্য ইনপুট ব্যবহার করা হয়:

<form @submit.prevent="registerAnswer">
  <label>
    <p>What do you think about our product?</p> 
    <textarea v-model="txtInp" placeholder="Write something.." rows="4" cols="35"></textarea>
  </label>
  <button type="submit">Submit</button>
</form>

Textarea

<textarea v-model="txtInp" rows="4"></textarea>

ফর্ম এন্ট্রি সেরা অভ্যাস

ভি-মডেল মডিফায়ার ব্যবহার করুন:.অলস, .সংখ্যা, .ট্রিম মডিফায়ার ইনপুট প্রক্রিয়াকরণ উন্নত করে৷
সঠিক ইনপুট প্রকারগুলি ব্যবহার করুন:type="email", type="tel", type="number" ইনপুট যাচাইকরণ এবং মোবাইল কীবোর্ড উন্নত করুন
স্বয়ংক্রিয় ফোকাস এবং যাচাইকরণ:অটোফোকাস এবং প্রয়োজনীয় বৈশিষ্ট্য ব্যবহার করুন
শুধুমাত্র পঠনযোগ্য ইনপুটগুলিতে ভি-মডেল ব্যবহার করবেন না:ফাইল, ছবির মত ইনপুটগুলির জন্য @পরিবর্তন ব্যবহার করুন
ইনপুট বৈধতা:@blur, @change ইভেন্ট সহ বৈধতা প্রয়োগ করুন
<!-- v-model modifiers examples -->
<input v-model.lazy="text">      <!-- Updates on change instead of input -->
<input v-model.number="age">     <!-- Converts to number -->
<input v-model.trim="username">  <!-- Trims whitespace -->

<!-- Form validation example -->
<input 
  type="email" 
  v-model="email"
  @blur="validateEmail"
  required
  :class="{ 'error': emailError }"
>

ফর্ম ইনপুট বৈধতা

ক্লায়েন্ট-সাইড বৈধতা

HTML5 ইনপুট বৈশিষ্ট্য ব্যবহার করে

required, pattern, min, max, minlength, maxlength

Vue বৈধতা

ইভেন্ট শ্রোতা এবং গণনা করা বৈশিষ্ট্য ব্যবহার করে

@blur, @input, computed error messages

সার্ভার-সাইড বৈধতা

API অনুরোধের মাধ্যমে বৈধতা

async/await with fetch or axios

তৃতীয় পক্ষের লাইব্রেরি

Vuelidate, Vee-Validate এর মত বৈধকরণ লাইব্রেরি

npm install vuelidate