Bagaimana cara melakukannya?
Saya mencoba:
var key = event.which || event.keyCode || event.charCode;
if(key == 8) alert('backspace');
tapi tidak berhasil ...
Jika saya melakukan hal yang sama pada acara penekanan tombol, itu berhasil, tetapi saya tidak ingin menggunakan penekanan tombol karena menampilkan karakter yang diketik di bidang masukan saya. Saya harus bisa mengendalikannya
kode saya:
$('#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);
});
tidak ada karakter yang harus ditambahkan dalam masukan saya, selain yang saya tambahkan dengan val () sebenarnya masukan dari pengguna harus sepenuhnya diabaikan, hanya tindakan menekan tombol yang penting bagi saya
javascript
jquery
Alex
sumber
sumber
.bind
, bukan pemilih. Harus$('content').bind('keypress', ...
Jawaban:
Gunakan
.onkeydown
dan batalkan penghapusan denganreturn false;
. Seperti ini:var input = document.getElementById('myInput'); input.onkeydown = function() { var key = event.keyCode || event.charCode; if( key == 8 || key == 46 ) return false; };
Atau dengan jQuery, karena Anda menambahkan tag jQuery ke pertanyaan Anda:
jQuery(function($) { var input = $('#myInput'); input.on('keydown', function() { var key = event.keyCode || event.charCode; if( key == 8 || key == 46 ) return false; }); });
</s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> </s> orang </s>
sumber
keydown
tidak berfungsi di Chrome Android, ia mengembalikan kekosongan saat mengklik backspace atau delenter
danbackspace
tombol padainput
peristiwa, dan penekanan tombol ini tidak mencapainyaDengan jQuery
The event.which properti menormalkan event.keyCode dan event.charCode. Dianjurkan untuk menonton acara yang untuk input tombol keyboard.
http://api.jquery.com/event.which/
jQuery('#input').on('keydown', function(e) { if( e.which == 8 || e.which == 46 ) return false; });
sumber
event.key === "Backspace"
Lebih baru dan lebih bersih: gunakan
event.key
. Tidak ada lagi kode angka yang berubah-ubah!input.addEventListener('keydown', function(event) { const key = event.key; // const {key} = event; ES6+ if (key === "Backspace" || key === "Delete") { return false; } });
Mozilla Docs
Browser yang Didukung
sumber
Sudahkah Anda mencoba menggunakan 'onkeydown'? Ini adalah acara yang Anda cari.
Ini beroperasi sebelum input dimasukkan dan memungkinkan Anda untuk membatalkan input karakter.
sumber
event.preventDefault()
?return false;
membatalkan acara apa pun saat menggunakan jQuery.Ini pertanyaan lama, tetapi jika Anda ingin menangkap kejadian backspace pada input, dan bukan keydown, keypress, atau keyup — seperti yang saya perhatikan salah satu dari fungsi-fungsi tertentu yang saya tulis dan menyebabkan penundaan yang canggung dengan pemformatan teks otomatis —Anda dapat menangkap backspace menggunakan inputType:
document.getElementsByTagName('input')[0].addEventListener('input', function(e) { if (e.inputType == "deleteContentBackward") { // your code here } });
sumber
keydown
denganevent.key === "Backspace" or "Delete"
Lebih baru dan lebih bersih: gunakan
event.key
. Tidak ada lagi kode angka yang berubah-ubah!input.addEventListener('keydown', function(event) { const key = event.key; // const {key} = event; ES6+ if (key === "Backspace" || key === "Delete") { return false; } });
Gaya modern:
input.addEventListener('keydown', ({key}) => { if (["Backspace", "Delete"].includes(key)) { return false } })
Mozilla Docs
Browser yang Didukung
sumber
$('div[contenteditable]').keydown(function(e) { // trap the return key being pressed if (e.keyCode === 13 || e.keyCode === 8) { return false; } });
sumber
//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 += "-" } }
sumber
pada perangkat android yang menggunakan chrome kami tidak dapat mendeteksi backspace. Anda dapat menggunakan solusi untuk itu:
var oldInput = '', newInput = ''; $("#ID").keyup(function () { newInput = $('#ID').val(); if(newInput.length < oldInput.length){ //backspace pressed } oldInput = newInput; })
sumber
which
dankeyCode
ke 229. Pasti ada cara yang lebih baik, atau cara yang lebih baik segera hadir, tetapi pada dasarnya saya akan menggunakan ini untuk saat ini. ..