¿Hay algún evento en Jquery que se active solo si el usuario pulsa el botón Entrar en un cuadro de texto? ¿O cualquier complemento que pueda agregarse para incluir esto? Si no, ¿cómo escribiría un complemento rápido que haría esto?Evento JQuery para usuario presionando Entrar en un cuadro de texto?
Respuesta
Puede conectar su propio evento personalizado
$('textarea').bind("enterKey",function(e){
//do stuff here
});
$('textarea').keyup(function(e){
if(e.keyCode == 13)
{
$(this).trigger("enterKey");
}
});
Aquí es un plugin para usted: (violín: http://jsfiddle.net/maniator/CjrJ7/)
$.fn.pressEnter = function(fn) {
return this.each(function() {
$(this).bind('enterPress', fn);
$(this).keyup(function(e){
if(e.keyCode == 13)
{
$(this).trigger("enterPress");
}
})
});
};
//use it:
$('textarea').pressEnter(function(){alert('here')})
Agradable. Mucho más simple que esa URL que publiqué. Me pregunto qué diablos es el artículo que publiqué y por qué se necesita tanto código ... – CaptSaltyJack
Demasiado tarde, ya he escrito el mío: P. También realiza el mismo trabajo en menos líneas ... además, usar la variable '$' para el complemento no es una buena idea, ya que puede causar conflictos. –
@ClickUpvote, envolverlo en un cierre debería arreglar ese – Neal
aquí hay un plugin de jQuery para hacer eso
(function($) {
$.fn.onEnter = function(func) {
this.bind('keypress', function(e) {
if (e.keyCode == 13) func.apply(this, [e]);
});
return this;
};
})(jQuery);
Para usarlo, incluyen el código y lo puso de esta manera:
$(function() {
console.log($("input"));
$("input").onEnter(function() {
$(this).val("Enter key pressed");
});
});
Bueno, yo llamaría a la devolución de llamada usando 'func.apply (this)', de esa manera dentro de la función de devolución de llamada puede usar 'this' como normal para acceder al elemento sobre el cual se desencadenó el evento. –
sí, un buen punto acerca de func.apply (esto), ni siquiera lo había considerado. – jzilla
Agradable y conciso, pero añadiría que detener la propagación y los valores predeterminados sería una buena idea en la mayoría de los casos, para evitar el envío de formularios. Simplemente agregue '' 'e.preventDefault(); e.stopPropagation(); '' 'dentro del' '' if (e.keyCode) '' 'bit. –
$('#textbox').on('keypress', function (e) {
if(e.which === 13){
//Disable textbox to prevent multiple submit
$(this).attr("disabled", "disabled");
//Do Stuff, submit, etc..
//Enable the textbox again if needed.
$(this).removeAttr("disabled");
}
});
Gracias - Esta solución se ajustaba a mi caso de uso. Sin embargo, vale la pena señalar que una vez que se realiza cualquier procesamiento, es posible que desee agregar '$ (this) .removeAttr (" disabled ");' para volver a habilitar el cuadro de texto. – misterjaytee
Cabe bien señaló que el uso de live()
en jQuery ha sido obsoleta a desde la versión 1.7
y ha sido eliminado en jQuery 1.9
. En su lugar, se recomienda el uso de on()
.
Yo sugeriría que la siguiente metodología para la unión, como los que resuelve los siguientes problemas potenciales:
- uniéndose al evento en
document.body
y pasando selector de $ como segundo argumento aon()
, los elementos pueden ser unidos, separado, agregado o eliminado del DOM sin la necesidad de tratar con eventos vinculantes o de doble enlace. Esto se debe a que el evento se adjunta aldocument.body
en lugar de$selector
directamente, lo que significa$selector
se puede agregar, eliminar y agregar nuevamente y nunca cargará el evento vinculado a él. - Al llamar al
off()
antes deon()
, este script puede vivir dentro del cuerpo principal de la página o dentro del cuerpo de una llamada AJAX, sin tener que preocuparse accidentalmente por eventos de doble enlace. - Al ajustar la secuencia de comandos dentro de
$(function() {...})
, este script puede volver a cargarse ya sea por el cuerpo principal de la página o dentro del cuerpo de una llamada AJAX.$(document).ready()
no se activa para solicitudes AJAX, mientras que$(function() {...})
sí.
Aquí es un ejemplo:
<!DOCTYPE html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
var $selector = $('textarea');
// Prevent double-binding
// (only a potential issue if script is loaded through AJAX)
$(document.body).off('keyup', $selector);
// Bind to keyup events on the $selector.
$(document.body).on('keyup', $selector, function(event) {
if(event.keyCode == 13) { // 13 = Enter Key
alert('enter key pressed.');
}
});
});
</script>
</head>
<body>
</body>
</html>
Eso debería ser event.keyCode == 13 – jasonmcclurg
true y fixed. –
Otra variación sutil. Fui a una ligera separación de poderes, así que tengo un plugin para permitir la captura de la tecla enter, entonces sólo se unen a eventos normalmente:
(function($) { $.fn.catchEnter = function(sel) {
return this.each(function() {
$(this).on('keyup',sel,function(e){
if(e.keyCode == 13)
$(this).trigger("enterkey");
})
});
};
})(jQuery);
Y entonces en uso:
$('.input[type="text"]').catchEnter().on('enterkey',function(ev) { });
Este la variación le permite usar la delegación de eventos (para enlazar a elementos que aún no ha creado). Código
$('body').catchEnter('.onelineInput').on('enterkey',function(ev) { /*process input */ });
HTML: -
<input type="text" name="txt1" id="txt1" onkeypress="return AddKeyPress(event);" />
<input type="button" id="btnclick">
Código Java Script
function AddKeyPress(e) {
// look for window.event in case event isn't passed in
e = e || window.event;
if (e.keyCode == 13) {
document.getElementById('btnEmail').click();
return false;
}
return true;
}
Su formulario no disponen por defecto botón Enviar
- 1. Jquery: cómo desencadenar un evento cuando el usuario borra un cuadro de texto
- 2. Javascript cuadro de texto Evento
- 3. Manejar al usuario presionando la tecla 'Entrar' en un sitio web ASP.NET MVC
- 4. Jquery validación vacía para cuadro de texto
- 5. jQuery evento al seleccionar un elemento sugerido en un cuadro de texto?
- 6. Jquery fadeout texto en un cuadro de texto y texto
- 7. jquery: seleccionar texto evento
- 8. ¿Cómo desencadenar un desenfoque/evento de enfoque en un cuadro de texto de entrada usando jquery?
- 9. Uso de jQuery para resaltar (Seleccionar) Todo el texto en un cuadro de texto
- 10. Evento de incendio en el cuadro de texto perder enfoque
- 11. Rellene un cuadro de texto con jQuery
- 12. C# ¿Cómo hago clic en un botón presionando Enter mientras el cuadro de texto tiene foco?
- 13. Ctrl + C en un cuadro de texto
- 14. botón clic evento perdido debido al cuadro de alerta en cuadro de texto evento onblur
- 15. Usando el código C# para simular el llenado del cuadro de texto y presionando el botón
- 16. jQuery UI Comportamiento de autocompletado. ¿Cómo buscar texto gratis en Entrar?
- 17. ¿Hay un evento OnExit o Leave en el cuadro de texto ASP.NET?
- 18. jQuery: cómo capturar la tecla presionando live()
- 19. Texto de límite de Jquery en el cuadro de entrada
- 20. Cuadro de texto de JQuery Autocompletar en eventos seleccionados
- 21. No se puede capturar la tecla Entrar en el cuadro de texto de WinForms
- 22. Jquery focus out evento
- 23. Obtenga el valor de un cuadro de texto durante el evento de corte
- 24. prevenir tanto la falta de definición y keyup eventos al fuego después de pulsar entrar en un cuadro de texto
- 25. JQuery Texto predeterminado en el cuadro de texto vacío
- 26. cuadro de texto TextTrimming
- 27. Cómo cambiar el texto de un TextView presionando un botón
- 28. RequiredFieldValidator para validar un cuadro de texto deshabilitado
- 29. ¿Hay alguna forma de invocar manualmente el evento "Introducir clave" en un cuadro de texto?
- 30. Cómo cambiar el valor del cuadro de texto en seleccionar evento con autocompletar (jQuery UI)
Vale la pena señalar que en un escenario de entrar en la detección para evitar fo El envío de rm, el evento "keyup" no es óptimo porque el formulario detecta el envío en el keydown. Por lo tanto, "keydown" o "keypress" podrían ser mejores en ese caso. – TechNyquist
Nota, bind() está en desuso en jQuery 3.0. –