Vue.js এ এন্টার কী পরিচালনা করা


93

আমি Vue.js শিখছি আমার ভুয়ে, আমার কাছে একটি পাঠ্য ক্ষেত্র এবং একটি বোতাম রয়েছে। ডিফল্টরূপে, এই বোতামটি কোনও ফর্ম জমা দেয় যখন কেউ তাদের কীবোর্ডের এন্টার কী টিপেন। যখন কেউ পাঠ্য ক্ষেত্রে টাইপ করছেন, আমি প্রতিটি কী টিপে ধরতে চাই। কীটি যদি '@' প্রতীক হয় তবে আমি বিশেষ কিছু করতে চাই। যদি চাপানো কীটি হ'ল "প্রবেশ করুন" কী, আমি পাশাপাশি বিশেষ কিছু করতে চাই। দ্বিতীয়টি হ'ল আমাকে চ্যালেঞ্জ দেওয়া। বর্তমানে, আমার কাছে এই ফিডল রয়েছে, যার মধ্যে এই কোডটি রয়েছে:

new Vue({
  el: '#myApp',
  data: {
    emailAddress: '',
    log: ''
  },
  methods: {
    validateEmailAddress: function(e) {
      if (e.keyCode === 13) {
        alert('Enter was pressed');
      } else if (e.keyCode === 50) {
        alert('@ was pressed');
      }      
      this.log += e.key;
    },

    postEmailAddress: function() {
      this.log += '\n\nPosting';
    }
});

আমার উদাহরণস্বরূপ, আমি ফর্মটি জমা না দিয়ে "এন্টার" কী টিপবো বলে মনে হচ্ছে না। তবুও, আমি validateEmailAddressকমপক্ষে প্রথমে ফাংশনটি আগুনের আশা করব যাতে আমি এটি ক্যাপচার করতে পারি। তবে, তা ঘটছে বলে মনে হয় না। আমি কি ভুল করছি?


4
আমি কি তোমার ফিডিতে কোন রূপ দেখছি না?
অমরেশ ভেনুগোপাল

উত্তর:


55

ইভেন্ট সংশোধক

কীতে ফর্ম জমা রোধ করতে আপনি ভয়েজে ইভেন্ট সংশোধক উল্লেখ করতে পারেন enter

ইভেন্ট হ্যান্ডলারদের কল করা event.preventDefault()বা তার event.stopPropagation()ভিতরে থাকা খুব সাধারণ প্রয়োজন ।

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

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

<form v-on:submit.prevent="<method>">
  ...
</form>

ডকুমেন্টেশন হিসাবে বলা হয়েছে, এটি সিনট্যাকটিকাল চিনির জন্য e.preventDefault()এবং এন্টার কী টিপে অযাচিত ফর্ম জমা দেওয়া বন্ধ করবে।

এখানে একটি কার্যকরী মাপসই আছে।

new Vue({
  el: '#myApp',
  data: {
    emailAddress: '',
    log: ''
  },
  methods: {
    validateEmailAddress: function(e) {
      if (e.keyCode === 13) {
        alert('Enter was pressed');
      } else if (e.keyCode === 50) {
        alert('@ was pressed');
      }      
      this.log += e.key;
    },
    
    postEmailAddress: function() {
			this.log += '\n\nPosting';
    },
    noop () {
      // do nothing ?
    }
  }
})
html, body, #editor {
  margin: 0;
  height: 100%;
  color: #333;
}
<script src="https://unpkg.com/vue@2.2.4/dist/vue.js"></script>
<div id="myApp" style="padding:2rem; background-color:#fff;">
<form v-on:submit.prevent="noop">
  <input type="text" v-model="emailAddress" v-on:keyup="validateEmailAddress" />
  <button type="button" v-on:click="postEmailAddress" >Subscribe</button> 
  <br /><br />
  
  <textarea v-model="log" rows="4"></textarea>  
</form>
</div>


আমার সেটআপটি ভ্যু-ক্লিমে 3 এ কাজ করার জন্য আমাকে এটি `@ keyup.native =" validateEmailAddress "এ পরিবর্তন করতে হয়েছিল
জেসি রেজা খোরাসানী

118

ভ্যুই 2 তে, আপনি v-on:keyup.enterডকুমেন্টেশন চেক করে ইভেন্টটি প্রবেশ করতে পারেন :

https://vuejs.org/v2/guide/events.html#Key- মোডিফায়ার

আমি একটি খুব সাধারণ উদাহরণ ছেড়ে :

var vm = new Vue({
  el: '#app',
  data: {msg: ''},
  methods: {
    onEnter: function() {
       this.msg = 'on enter event';
    }
  }
});
<script src="https://cdn.jsdelivr.net/npm/vue"></script>

<div id="app">
  <input v-on:keyup.enter="onEnter" />
  <h1>{{ msg }}</h1>
</div>

শুভকামনা


8
এটি আমার প্রয়োজনীয় ইঙ্গিতটি দিয়েছে। বুয়েফির সাথে আমার বি-ইনপুটটির জন্য দেশি যুক্ত হওয়া দরকার:v-on:keyup.native.enter="onEnter"
টার্বো

4
এছাড়াও আপনি @ keyup.enter = "doSomething" ব্যবহার করতে পারেন
Dazzle

v-on: keyup.native.enter = "onEnter" কেবলমাত্র সেই উপাদানগুলির সাথে বৈধ যা বোতামে নেই।
পুষ্পলতা

কী প্রেসগুলি সনাক্ত করতে আমাদের সর্বদা একটি ইনপুট দরকার? আমি তীর এবং এসকে কী (যখন পূর্ণস্ক্রিনে থাকি) দিয়ে বুয়েফিউ কারাউসেলটি নিয়ন্ত্রণ করার চেষ্টা করছি।
নিক মানারিন

21

আপনি শেষ লাইনের আগে একটি '}' ভুলে গেছেন ("পদ্ধতিগুলি close ..." বন্ধ করতে)।

এই কোডটি কাজ করে:

Vue.config.keyCodes.atsign = 50;

new Vue({
  el: '#myApp',
  data: {
    emailAddress: '',
    log: ''
  },
  methods: {
  
    onEnterClick: function() {
    	alert('Enter was pressed');
    },
    
    onAtSignClick: function() {
    	alert('@ was pressed');
    },
    
    postEmailAddress: function() {
			this.log += '\n\nPosting';
    }
  }
})
html, body, #editor {
  margin: 0;
  height: 100%;
  color: #333;
}
<script src="https://vuejs.org/js/vue.min.js"></script>

<div id="myApp" style="padding:2rem; background-color:#fff;">

  <input type="text" v-model="emailAddress" v-on:keyup.enter="onEnterClick" v-on:keyup.atsign="onAtSignClick" />
  
  <button type="button" v-on:click="postEmailAddress" >Subscribe</button> 
  <br /><br />
  
  <textarea v-model="log" rows="4"></textarea>
</div>


এমন কোনও সাইট আছে যা অক্ষর এবং সংখ্যাগুলির মধ্যে ম্যাপিং তালিকাবদ্ধ করে (যেমন 50 এবং @)? আমি এটি
ভ্যু


14

ইভেন্ট হ্যান্ডলিং প্রবেশের জন্য আপনি ব্যবহার করতে পারেন

  1. @keyup.enter বা
  2. @keyup.13

13 হল প্রবেশের কীকোড। @ কী ইভেন্টের জন্য, কীকোডটি 50 50 তাই আপনি ব্যবহার করতে পারেন@keyup.50

উদাহরণ স্বরূপ:

<input @keyup.50="atPress()" />

এমন কোনও সাইট আছে যা অক্ষর এবং সংখ্যাগুলির মধ্যে ম্যাপিং তালিকাবদ্ধ করে (যেমন 50 এবং @)? আমি ভ্যু ডকুমেন্টেশনে এটি খুঁজে পাইনি।
ব্যজিপ্রোগ্রামার

আমি কি একাধিক কী ব্যবহার করতে পারি? @ কিডাউন .১.২ এর মতো কিছু?
এলিয়েন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.