Por qué el valor de entrada no se puede cambiar cuando presionando escape
-
12-09-2019 - |
Pregunta
Tengo una entrada (fuera) que captura nombre de una imagen. El usuario debe rellenar un nuevo nombre y pulsa enter. Ajax de devolución de llamada cambia el nombre de la imagen. Esto funciona.
Me gustaría añadir capacidad de 'reset' el contenido de entrada cuando el usuario presiona Escape (# 27). Pero no soy capaz de llenar el valor de la entrada con mi valor.
El código es
<input id="escapeInput" value="this is test" /> <input type="button" id="setDetaultToEscapeInput" value="Set default" />
jQuery(document).ready(function() {
jQuery("#escapeInput").keydown(function(evt) {
if (evt.keyCode == 27) {
var input = jQuery(this);
input.val('some default value') // doesn't work
input[0].value = 'some default value 2'; // doesn't work
input.parent().append('changed');
}
});
jQuery("#setDetaultToEscapeInput").click(function() {
var input = jQuery("#escapeInput");
input.val('some default value') // works ok
});
});
Lo interesante es que si pruebo por ejemplo, para el carácter 'A' (si (== evt.keyCode 65)), el código funciona. ¿Alguna idea de cómo manejar la situación? No funciona sólo en FF (Opera e IE8 están bien).
Solución
Trate de usar el evento keyup lugar.
$(function() {
$("#escapeInput").keyup(function(e) {
if (e.keyCode == 27) {
$(this).val("some default value");
}
});
});
Otros consejos
Probar
$(document).ready(function() {
$("#escapeInput").keypress(function(evt) {
var keycode = null;
if(evt.keyCode) {
keycode = evt.keyCode;
} else {
keycode = evt.which;
}
if (keycode == 27) {
$(this).val("some default value");
}
});
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow