Aftab Ishfaq
Aftab Ishfaq

Reputation: 121

Disable all keys but copy paste combination

I am writing a code for number field where i have disabled all keys except number keys

function doValidation(event) {
  var charCode = event.keyCode;
  if (charCode != 190 && charCode != 40 && charCode != 39 && charCode != 38 && charCode != 37 && charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57) && (charCode < 96 || charCode > 105))
    return false;
}
<input type="text" onkeydown="doValidation(event)">

Now i want to enable ctrl+c and ctrl+v in this funtion.

Upvotes: 1

Views: 964

Answers (3)

Mamta
Mamta

Reputation: 11

// Disable Right click
document.addEventListener('contextmenu', event => event.preventDefault());

// Disable key down
document.onkeydown = disableSelectCopy;

// Disable mouse down
document.onmousedown = dMDown;

// Disable click
document.onclick = dOClick;

function dMDown(e) { return false; }

function dOClick() { return true; }

function disableSelectCopy(e) {
    // current pressed key
    var pressedKey = String.fromCharCode(e.keyCode).toLowerCase();
    if ((e.ctrlKey && (pressedKey == "c" || pressedKey == "x" || pressedKey == "v" || pressedKey == "a" || pressedKey == "u")) ||  e.keyCode == 123) {
        return false;
    }
}

Upvotes: 0

shajji
shajji

Reputation: 1667

you can do this like below :)

var is_ctrl_pressed = false;
$('#number_input').on('keydown', function(e) {
    var code = e.which;
    if ((code > 47 && code < 59) || (code > 95 && code < 106) || (is_ctrl_pressed && (code == 67 || code == 86))) {
        return true;
    } else if (code == 17) {
        is_ctrl_pressed = true;
    } else {
        return false;
    }
});
$('#number_input').on('keyup', function(e) {
    if (e.which == 17) {
        is_ctrl_pressed = false;
    }
});

Upvotes: 3

Anshuman
Anshuman

Reputation: 803

Hope this will be helpful.

$('input[type="number"]').keypress(function(e){
  //Numbers 47 to 57 are the key code of digit 0 to 9.
  if (![48,49,50,51,52,53,54,55,56,57].includes(e.keyCode)){
    e.preventDefault();
  }
});

Upvotes: 2

Related Questions