আমাকে সম্প্রতি একটি ফর্ম উপাদানটিতে পেস্টিংটি ভিক্ষাবৃত্তিতে অক্ষম করতে হয়েছিল। এটি করতে, আমি ইন্টারনেট এক্সপ্লোরারের (এবং অন্যদের) অনপেষ্ট ইভেন্ট হ্যান্ডলারের একটি ক্রস-ব্রাউজার * প্রয়োগকরণ লিখেছি। আমার সমাধানটি কোনও তৃতীয় পক্ষের জাভাস্ক্রিপ্ট লাইব্রেরির চেয়ে আলাদা হতে হবে।
আমি যা নিয়ে এসেছি তা এখানে। এটি সম্পূর্ণরূপে আটকানো নিষ্ক্রিয় করে না (উদাহরণস্বরূপ ব্যবহারকারী একবারে একটি অক্ষর পেস্ট করতে পারে), তবে এটি আমার প্রয়োজনগুলি পূরণ করে এবং কী কোডস ইত্যাদির সাথে ডিল করা এড়ানো যায় ids
(function () {
var onload = window.onload;
window.onload = function () {
if (typeof onload == "function") {
onload.apply(this, arguments);
}
var fields = [];
var inputs = document.getElementsByTagName("input");
var textareas = document.getElementsByTagName("textarea");
for (var i = 0; i < inputs.length; i++) {
fields.push(inputs[i]);
}
for (var i = 0; i < textareas.length; i++) {
fields.push(textareas[i]);
}
for (var i = 0; i < fields.length; i++) {
var field = fields[i];
if (typeof field.onpaste != "function" && !!field.getAttribute("onpaste")) {
field.onpaste = eval("(function () { " + field.getAttribute("onpaste") + " })");
}
if (typeof field.onpaste == "function") {
var oninput = field.oninput;
field.oninput = function () {
if (typeof oninput == "function") {
oninput.apply(this, arguments);
}
if (typeof this.previousValue == "undefined") {
this.previousValue = this.value;
}
var pasted = (Math.abs(this.previousValue.length - this.value.length) > 1 && this.value != "");
if (pasted && !this.onpaste.apply(this, arguments)) {
this.value = this.previousValue;
}
this.previousValue = this.value;
};
if (field.addEventListener) {
field.addEventListener("input", field.oninput, false);
} else if (field.attachEvent) {
field.attachEvent("oninput", field.oninput);
}
}
}
}
})();
পেস্টিং অক্ষম করার জন্য এটির ব্যবহার করতে:
<input type="text" onpaste="return false;" />
* আমি জানি যে অননপুট ডাব্লু 3 সি ডোম অনুচ্ছেদের অংশ নয়, তবে আমি ব্রাউজারগুলির মধ্যে সমস্তটিই এই কোডটি — ক্রোম 2, সাফারি 4, ফায়ারফক্স 3, অপেরা 10, আই 6, আই 7 either নয়ত ইনপুট বা অনপাস সমর্থন করে tested এই সমস্ত ব্রাউজারগুলির মধ্যে কেবল অপেরা অনপেষ্টকে সমর্থন করে না, তবে এটি অনপুট সমর্থন করে।
দ্রষ্টব্য: এটি কোনও কনসোল বা অন্য সিস্টেমে কাজ করবে না যা অন-স্ক্রিন কীবোর্ড ব্যবহার করে (অন-স্ক্রীন কীবোর্ডটি ব্রাউজারে কীগুলি প্রেরণ করে না যখন প্রতিটি কী নির্বাচন করা হয়)। যদি এটি সম্ভব হয় তবে আপনার পৃষ্ঠা / অ্যাপটি কোনও অন-স্ক্রীন কীবোর্ড এবং অপেরা (যেমন: নিন্টেন্ডো ওয়াই, কিছু মোবাইল ফোন) সহ কেউ ব্যবহার করতে পারবেন, আপনি যদি অন-স্ক্রিন কীবোর্ডটি পরীক্ষা না করে পরীক্ষা না করেন তবে এই স্ক্রিপ্টটি ব্যবহার করবেন না প্রতিটি কী নির্বাচনের পরে ব্রাউজারে কীগুলি প্রেরণ করে।