Quiero realizar un seguimiento de las pulsaciones de teclas del usuario en el campo de entrada en una función separada y llamar a una función basada en el valor de onkeydown de tecla. Lo que tengo a continuación simplemente no funciona. No pasa nada. Estoy abierto a revelaciones y comentarios reveladores. Creo que me estoy perdiendo algo importante.
function find_key(Fval, Fid) { //prevents malicious characters if ((event.charCode <= 47) || (event.charCode >= 64)) { return; }; // user presses ctrl + delete // this doesn't work, nothing happens if (event.code == 46 && (event.ctrlKey || event.metaKey)) { alert('Undo!'); } // user presses ctrl + enter // this doesn't work, nothing happens if (event.ctrlKey && e.keyCode == 13) { alert("grab"); grabName(Fval, Fid); } } <input onkeydown="find_key(this,this.id);" id="P${i}" />Intenté esto basado en una sugerencia: (aunque no funciona)
`<input class = 'tiger' id = "P${i}" />`;document.getElementsByClassName('tigre').addEventListener('keypress', findKey);
function find_key (e) { if (event.code == 46 && (event.ctrlKey || event.metaKey)) { alert('Undo!'); }Debe pasar el evento como argumento (tenga en cuenta que se debe usar el nombre exacto del argumento "evento").
<input onkeydown = "find_key(event, this, this.id);" id = "P${i}" />;Y luego en js
function find_key (event, Fval, Fid) { //... }PD: ¿por qué no usar el método de documento en el código js y agregar un detector de eventos a su entrada directamente?
document.getElementById('input_el_id').addEventListener('keydown', findKey); function findKey(e) { //... }