কীস্ট্রোকের জন্য অনুসন্ধান করা কেবলমাত্র একটি আংশিক সমাধান, কারণ মাউস ক্লিকগুলি ব্যবহার করে কোনও ইনপুট ক্ষেত্রের বিষয়বস্তু পরিবর্তন করা সম্ভব। আপনি যদি কোনও পাঠ্য ক্ষেত্রে ডান ক্লিক করেন তবে আপনি কীস্ট্রোক না করে মান পরিবর্তন করতে ব্যবহার করতে পারেন এমন বিকল্পগুলি কেটে পেস্ট করতে পারেন। তেমনি, যদি স্বতঃপূরণ সক্ষম হয় তবে আপনি একটি ক্ষেত্রের বাম-ক্লিক করতে পারেন এবং পূর্বে প্রবেশ করা পাঠ্যের একটি ড্রপডাউন পেতে পারেন, এবং মাউস ক্লিক ব্যবহার করে আপনার পছন্দগুলির মধ্যে থেকে নির্বাচন করতে পারেন। কীস্ট্রোক ফাঁদে ফেলা এই ধরণের পরিবর্তনগুলির কোনওরই সনাক্ত করতে পারে না।
দুঃখের বিষয়, এমন কোনও "উদ্বোধনী" ইভেন্ট নেই যা অবিলম্বে পরিবর্তনের খবর দেয়, কমপক্ষে আমি জানি। তবে একটি সমাধান রয়েছে যা সমস্ত ক্ষেত্রে কার্যকর হয়: সেটইন্টারভাল () ব্যবহার করে একটি সময় অনুষ্ঠান সেট আপ করুন।
ধরা যাক যে আপনার ইনপুট ক্ষেত্রে "সিটি" এর একটি আইডি এবং নাম রয়েছে:
<input type="text" name="city" id="city" />
"শহর" নামে একটি বৈশ্বিক পরিবর্তনশীল রয়েছে:
var city = "";
এটি আপনার পৃষ্ঠার সূচনাতে যুক্ত করুন:
setInterval(lookForCityChange, 100);
তারপরে একটি লুক ফরসিটি চেঞ্জ () ফাংশন সংজ্ঞায়িত করুন:
function lookForCityChange()
{
var newCity = document.getElementById("city").value;
if (newCity != city) {
city = newCity;
doSomething(city);
}
}
এই উদাহরণে, "শহর" এর মান প্রতি 100 মিলিসেকেন্ডে পরীক্ষা করা হয়, যা আপনি আপনার প্রয়োজন অনুসারে সামঞ্জস্য করতে পারেন। আপনি যদি চান তবে লুকঅফটিসিটি চেঞ্জ () সংজ্ঞায়নের পরিবর্তে একটি বেনামি ফাংশন ব্যবহার করুন। আপনার কোড বা এমনকি ব্রাউজার ইনপুট ক্ষেত্রের জন্য প্রাথমিক মান সরবরাহ করতে পারে তাই সচেতন থাকুন যাতে ব্যবহারকারীকে কিছু করার আগে আপনাকে "পরিবর্তন" সম্পর্কে অবহিত করা যেতে পারে; আপনার কোডটি প্রয়োজনীয় হিসাবে সামঞ্জস্য করুন।
যদি সেকেন্ডের দশম দশকে সময়োপযোগী অনুষ্ঠানের ধারণাটি অস্পষ্টভাবে মনে হয়, আপনি যখন টাইপটি ইনপুট ফিল্ডটি ফোকাসটি গ্রহণ করতে পারেন এবং এটিকে (ক্লিয়ারইন্টারওয়াল () সহ) একটি অস্পষ্টতার পরে শেষ করতে পারেন। আমি মনে করি না কোনও ইনপুট ফিল্ডটির ফোকাস না পেয়ে এটির মান পরিবর্তন করা সম্ভব, তাই এই ফ্যাশনে টাইমারটি চালু এবং বন্ধ করা নিরাপদ হওয়া উচিত।