Vue ফর্ম ইনপুট
এর আগে এই টিউটোরিয়ালে আমরা Vue ফর্ম এবং v-মডেল পৃষ্ঠাগুলিতে ফর্ম ইনপুট উদাহরণ দেখেছি।
এই পৃষ্ঠাটি Vue-তে আরও ফর্ম ইনপুট উদাহরণগুলির একটি সংগ্রহ, যেমন রেডিও বোতাম, চেকবক্স, একটি ড্রপ-ডাউন তালিকা এবং একটি সাধারণ পাঠ্য ইনপুট ক্ষেত্র৷
Vue ডেটা
ফর্ম ইনপুট
রেডিও বোতাম
একই নির্বাচনের অন্তর্গত রেডিও বোতামের একই নাম থাকতে হবে যাতে শুধুমাত্র একটি রেডিও বোতাম নির্বাচন করা যায়।
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>ট্যাগ এবং ভিতরে<option>ট্যাগ রয়েছে।
Vue-তে একটি ড্রপ-ডাউন তালিকা ব্যবহার করার সময়,<select>ট্যাগ ভি-মডেল ইত্যাদির সাথে লিঙ্ক করা উচিত<option>ট্যাগ মান নির্ধারণ করা উচিত:
<template>
<h1>Drop-down List in Vue</h1>
<form @submit.prevent="registerAnswer">
<label for="cars">Choose a car:</label>
<select v-model="carSelected" id="cars">
<option disabled value="">Please select one</option>
<option>Volvo</option>
<option>Saab</option>
<option>Opel</option>
<option>Audi</option>
</select>
<br><br>
<input type="submit" value="Submit">
</form>
<div>
<h3>Submitted answer:</h3>
<p id="pAnswer">{{ inpValSubmitted }}</p>
</div>
</template>
<script>
export default {
data() {
return {
carSelected: '',
inpValSubmitted: 'Not submitted yet'
}
},
methods: {
registerAnswer() {
if(this.carSelected) {
this.inpValSubmitted = this.carSelected;
}
}
}
}
</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>
নীচের বিকল্পগুলি থেকে সঠিক উত্তর চয়ন করুন:
শুধুমাত্র পঠনযোগ্য ফর্ম এন্ট্রি
ফর্ম ইনপুটগুলিতে ভি-মডেল ব্যবহার করা একটি দ্বি-মুখী বাঁধাই তৈরি করে, যার অর্থ 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>
ফর্ম এন্ট্রি সেরা অভ্যাস
<!-- 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