খাঁটি জাভাস্ক্রিপ্ট শুনুন ইনপুট মান পরিবর্তন


98

আমি কোনও ধরণের ক্রমাগত ফাংশন তৈরি করতে পারি যা কোনও ইনপুট শোনায়, তাই যখন ইনপুটটির মান পরিবর্তন হয়, ততক্ষণে কিছু ট্রিগার হয়ে যায়?

আমি খাঁটি জাভাস্ক্রিপ্ট, কোনও প্লাগইন, কোনও ফ্রেমওয়ার্ক ব্যবহার করে কিছু খুঁজছি এবং আমি এইচটিএমএল সম্পাদনা করতে পারছি না।

কিছু, উদাহরণস্বরূপ:

আমি যখন ইনপুটটিতে মানটি পরিবর্তন করি তখন MyObjectএই ফাংশনটি চলে।

কোন সাহায্য?

উত্তর:


133

এটিই ইভেন্টগুলির জন্য।

HTMLInputElementObject.addEventListener('input', function (evt) {
    something(this.value);
});

21
জাভাস্ক্রিপ্ট দ্বারা ইনপুট মান পরিবর্তন করা হলে কাজ করবে না
ইমশোগুন

4
মনে রাখবেন যে, typeof this.valueহয় string। একটি সংখ্যা প্রয়োজন হলে, সঙ্গে এটি রূপান্তর parseInt বা parseFloat
আকসেলি পালান

34

একটি প্রাথমিক উদাহরণ হিসাবে ...

এইচটিএমএল:

<input type="text" name="Thing" value="" />

লিপি:

/* event listener */
document.getElementsByName("Thing")[0].addEventListener('change', doThing);

/* function */
function doThing(){
   alert('Horray! Someone wrote "' + this.value + '"!');
}

এখানে একটি বেহালতা রয়েছে: http://jsfiddle.net/Niffler/514gg4tk/


11
জাভাস্ক্রিপ্ট দ্বারা ইনপুট সামগ্রী পরিবর্তন করা হলে কাজ করবে না। 'ইনপুট' বা 'পরিবর্তন' ইভেন্ট সহ নয়।
ইমশোগুন

9
জাভাস্ক্রিপ্ট দ্বারা মান পরিবর্তন করা হলে আপনি কোন ইভেন্টটি শুনতে পারেন?
শূন্য_কুল

4
এবং অন্যরা যেমন নির্দেশ করেছে, আপনি না হয় ইনপুট ফিল্ডটি প্রস্থান না করা অবধি ট্রিগার করবেন না। এতক্ষণে পুরানো উত্তর, আমি জানি। তবে এই উত্তরগুলি প্রায়শই অবাক করে দেয় এবং তারা কখনও সীমাবদ্ধতার কথা উল্লেখ করে না।
টেক্সড

8

আসলে, টিকযুক্ত উত্তরটি ঠিক সঠিক, তবে উত্তরটি ES6আকারে হতে পারে :

HTMLInputElementObject.oninput = () => {
  console.log('run'); // Do something
}

বা নীচের মতো লেখা যেতে পারে:

HTMLInputElementObject.addEventListener('input', (evt) => {
  console.log('run'); // Do something
});

2

ডিফল্ট ব্যবহার

el.addEventListener('input', function () {
    fn();
});

তবে , আপনি যখন জেএস-এর মাধ্যমে ইনপুট মান ম্যানুয়ালি পরিবর্তন করার সময় ইভেন্টটি চালিয়ে যেতে চান আপনি কাস্টম ইভেন্ট (কোনও নাম যেমন 'মাইভেন্ট' ev 'অ্যাভ' ইত্যাদি ইত্যাদি) ব্যবহার করা উচিত যদি আপনার ফর্মগুলি 'পরিবর্তন' বা 'ইনপুট' ইভেন্ট শুনতে হয় তবে এবং আপনি জেএস এর মাধ্যমে ইনপুট মান পরিবর্তন করেন - আপনি আপনার কাস্টম ইভেন্টটির নাম 'পরিবর্তন' input 'ইনপুট' রাখতে পারেন এবং এটি খুব কার্যকর হবে।

var event = new Event('input');
el.addEventListener('input', function () { 
  fn();
});
form.addEventListener('input', function () { 
  anotherFn();
});


el.value = 'something';
el.dispatchEvent(input);

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Crying_and_triggering_events


-7

আইডি পরিবর্তে আপনার উপাদান সনাক্ত করতে শিরোনাম ব্যবহার করুন এবং নীচের মত কোড লিখুন।

$(document).ready(()=>{

 $("input[title='MyObject']").change(()=>{
        console.log("Field has been changed...")
    })  
});

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