ব্যাকস্পেস এবং "ইনপুট" ইভেন্টে ডেল সনাক্ত করুন?


95

কিভাবে যে কি?

আমি চেষ্টা করেছিলাম:

var key = event.which || event.keyCode || event.charCode;

if(key == 8) alert('backspace');

কিন্তু এটি কাজ করে না ...

যদি আমি কীপ্রেস ইভেন্টটিতে এটি কাজ করে তবে আমি কীপ্রেস ব্যবহার করতে চাই না কারণ এটি আমার ইনপুট ক্ষেত্রে টাইপ করা অক্ষরকে আউটপুট করে। আমি এটি নিয়ন্ত্রণ করতে সক্ষম হতে হবে


আমার কোড:

  $('#content').bind('input', function(event){

    var text = $(this).val(),
        key = event.which || event.keyCode || event.charCode;

    if(key == 8){
      // here I want to ignore backspace and del
    }

    // here I'm doing my stuff
    var new_text = 'bla bla'+text;
    $(this).val(new_text);
  });

আমার ইনপুটটিতে কোনও অক্ষর যুক্ত করা উচিত নয়, আমি ভাল () দিয়ে যা যুক্ত করছি তা ছাড়া ব্যবহারকারীর কাছ থেকে প্রাপ্ত ইনপুটটি সম্পূর্ণ উপেক্ষা করা উচিত, কেবল কী টিপানো কর্মটিই আমার পক্ষে গুরুত্বপূর্ণ


4
আপনার আসলে অরিং - ইভেন্ট করার দরকার নেই - যা ঠিক আছে, jQuery আপনার জন্য ইভেন্ট অবজেক্টকে স্বাভাবিক করে তোলে। Api.jquery.com/category/events/event-object
নিকো

আপনার নির্বাচনের নামটি .bindনির্বাচক নয়, প্রথম যুক্তি হিসাবে যুক্ত করার কথা । হওয়া উচিত$('content').bind('keypress', ...
বিকেল

উত্তর:


123

এর .onkeydownসাথে অপসারণটি ব্যবহার করুন এবং বাতিল করুন return false;। এটার মত:

var input = document.getElementById('myInput');

input.onkeydown = function() {
    var key = event.keyCode || event.charCode;

    if( key == 8 || key == 46 )
        return false;
};

বা jQuery সহ, কারণ আপনি আপনার প্রশ্নে একটি jQuery ট্যাগ যুক্ত করেছেন:

jQuery(function($) {
  var input = $('#myInput');
  input.on('keydown', function() {
    var key = event.keyCode || event.charCode;

    if( key == 8 || key == 46 )
        return false;
  });
});

اور


19
আপনি যদি ডান ক্লিকের> পেস্ট থেকে ইনপুট ধরতে চান?
সিটিবি

6
keydownক্রোম অ্যান্ড্রয়েডে কাজ করে না, ব্যাকস্পেস বা ডেল ক্লিক করার সময় শূন্যতা ফিরে আসে
কোসমেটিকা

4
ফাংশনে আমাদের ইভেন্টটিকে প্যারামিটার হিসাবে রাখতে হবে তবে কেবল এটি ফাংশন (ইভেন্ট) -------------------------- var ইনপুট = ডকুমেন্টের মতো কাজ করবে। getElementById ('আমার ইনপুট'); ইনপুট.অনকিডাউন = ফাংশন (ইভেন্ট) key var কী = ইভেন্ট.কি কোড ইভেন্ট.চোড়কোড; যদি (কী == 8 || কী == 46) মিথ্যা প্রত্যাবর্তন করে; };
অনুরাগ_বিএইচএস

4
jQuery এর সাহায্যে এটি অভ্যন্তরীণভাবে ইভেন্টগুলিতে ফিল্টার করে enterএবং backspaceকীগুলি সরবরাহ করে inputএবং এই কী
টিপগুলি এটিতে

@ ওয়াটার - এটি কোনও বড় বিষয় নয়, তবে আমি মনে করি jquery এর কোডটিতে একটি টাইপ রয়েছে। আমি মনে করি আপনি অন-কীডাউন ইভেন্ট হ্যান্ডলারের সাথে প্যারামিটারের নাম "ইভেন্ট" যুক্ত করবেন।
রোববার ভাল

14

JQuery সহ

Event.which সম্পত্তি event.keyCode এবং event.charCode normalizes। এটি ইভেন্ট দেখার পরামর্শ দেওয়া হয় keyboard যা কীবোর্ড কী ইনপুটগুলির জন্য।

http://api.jquery.com/event.Wich/

jQuery('#input').on('keydown', function(e) {
    if( e.which == 8 || e.which == 46 ) return false;
});

4
আমি দীর্ঘদিন ধরে jQuery ব্যবহার করে আসছি, তবে এটি দেখিনি। সর্বদা নতুন কিছু শিখতে ভাল। +1!
সাবেলফোস্টে

10

ইভেন্ট.কি === "ব্যাকস্পেস"

আরও সাম্প্রতিক এবং অনেক ক্লিনার: ব্যবহার event.key। আর যথেচ্ছ নম্বর কোড নেই!

input.addEventListener('keydown', function(event) {
    const key = event.key; // const {key} = event; ES6+
    if (key === "Backspace" || key === "Delete") {
        return false;
    }
});

মজিলা ডক্স

সমর্থিত ব্রাউজারগুলি


কখনও কখনও ইভেন্ট.কী "প্রক্রিয়া" ফিরিয়ে দেয় এমন কোনও কারণে যা আমি বুঝতে পারি না ...
অস্কার চেম্বারস

এটি একটি সমর্থিত ব্রাউজার। আপনার একটি বাগ থাকতে পারে, বা আপনার কাস্টম কীবোর্ডটি কীডাউন ইভেন্টগুলিতে আগুন নেবে না
গিবল্ট

3

আপনি 'অনকিডাউন' ব্যবহার করার চেষ্টা করেছেন? এই ইভেন্টটি আপনি সন্ধান করছেন।

এটি ইনপুট প্রবেশের আগে চালিত করে এবং আপনাকে চর ইনপুট বাতিল করতে দেয়।


তবে আমি কীভাবে এটি বাতিল করব? কারণ আমি ইনপুটটিতে ভাল () ব্যবহার করছি এবং এটি এখনও টাইপ করা অক্ষর যুক্ত করে
আলেক্স

4
কীভাবে event.preventDefault()?
নিকো

আপনি return false;jQuery ব্যবহার করার সময় কোনও ইভেন্ট বাতিল করতে পারেন to
আইএমজেস

3

এটি একটি পুরানো প্রশ্ন, তবে আপনি যদি ইনপুটটিতে কোনও ব্যাকস্পেস ইভেন্টটি ধরতে চেয়েছিলেন এবং কীডাউন, কীপ্রেস বা কীআপ নয় — যেহেতু আমি লিখেছি এই কয়েকটি বিরতি নির্দিষ্ট কার্যাবলী দেখেছি এবং স্বয়ংক্রিয় পাঠ্য বিন্যাসের সাথে বিশ্রী দেরি করছে আপনি ইনপুট টাইপ ব্যবহার করে ব্যাকস্পেস ধরতে পারেন:

document.getElementsByTagName('input')[0].addEventListener('input', function(e) {
    if (e.inputType == "deleteContentBackward") {
        // your code here
    }
});

3

keydown সঙ্গে event.key === "Backspace" or "Delete"

আরও সাম্প্রতিক এবং অনেক ক্লিনার: ব্যবহার event.key। আর যথেচ্ছ নম্বর কোড নেই!

input.addEventListener('keydown', function(event) {
    const key = event.key; // const {key} = event; ES6+
    if (key === "Backspace" || key === "Delete") {
        return false;
    }
});

আধুনিক রীতি:

input.addEventListener('keydown', ({key}) => {
    if (["Backspace", "Delete"].includes(key)) {
        return false
    }
})

মজিলা ডক্স

সমর্থিত ব্রাউজারগুলি


2
$('div[contenteditable]').keydown(function(e) {
// trap the return key being pressed
if (e.keyCode === 13 || e.keyCode === 8)
{
    return false;
}
});

4
"ব্যাকস্পেস" এর জন্য মূল কোড 8
ফণিকুমার জাটভল্লভুল

প্রশ্নটি ব্যাকস্পেস এবং মুছে ফেলা সম্পর্কে, ব্যাকস্পেস এবং এন্টারটি নয়।
পল

0
//Here's one example, not sure what your application is but here is a relevant and likely application 
function addDashesOnKeyUp()
{
    var tb = document.getElementById("tb1"); 
    var key = event.which || event.keyCode || event.charCode;

    if((tb.value.length ==3 || tb.value.length ==7 )&& (key !=8) ) 
    {
        tb.value += "-"
    } 
}

0

ক্রোম ব্যবহার করে অ্যান্ড্রয়েড ডিভাইসে আমরা কোনও ব্যাকস্পেস সনাক্ত করতে পারি না। আপনি এটির জন্য কঠোর ব্যবহার করতে পারেন:

var oldInput = '',
    newInput = '';

 $("#ID").keyup(function () {
  newInput = $('#ID').val();
   if(newInput.length < oldInput.length){
      //backspace pressed
   }
   oldInput = newInput;
 })

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