Tengo una entrada de texto y un botón (ver más abajo). ¿Cómo puedo usar JavaScript para activar el evento de clic del botón cuando Enterse presiona la tecla dentro del cuadro de texto?
Ya hay un botón de envío diferente en mi página actual, por lo que no puedo simplemente hacer que el botón sea un botón de envío. Y, solo quiero que la Entertecla haga clic en este botón específico si se presiona desde este cuadro de texto, nada más.
<input type="text" id="txtSearch" />
<input type="button" id="btnSearch" value="Search" onclick="doSomething();" />
javascript
button
onclick
onkeypress
kdenney
fuente
fuente
Respuestas:
En jQuery, lo siguiente funcionaría:
O en JavaScript simple, lo siguiente funcionaría:
fuente
keydown
Nokeyup
es el mejor evento para usar. Además, si está utilizando asp.net, tendrá que hacerloreturn false
al final para evitar que asp.net siga interceptando el evento.keydown
es que mantener presionada la tecla enter activará el evento una y otra vez. si se adjunta alkeyup
evento, solo se activará una vez que se suelte la tecla.event.preventDefault();
antes de invocarclick();
la función mientras mi página tiene una forma y he cambiadokeyup
con elkeypress
ya que era el controlador sólo trabaja para mí, de todos modos, gracias por pieza ordenada de código!¡Entonces solo codifícalo!
fuente
Descubrí esto:
fuente
Haga que el botón sea un elemento de envío, para que sea automático.
Tenga en cuenta que necesitará un
<form>
elemento que contenga los campos de entrada para que esto funcione (gracias Sergey Ilinsky).No es una buena práctica redefinir el comportamiento estándar, la Enterclave siempre debe llamar al botón de envío en un formulario.
fuente
<form>
analizador HTML, que de otro modo es liberal, elimina cualquier etiqueta. Así que tengo que secuestrar pulsaciones de teclas o reventar. (Por cierto, al pulsar Intro en SharePoint modo Editar lanzamientos por alguna razón, supongo que la cinta es el uso de la misma forma..)<button type="submit" onclick="return doSomething(this)">Value</button>
trabaja para. La pista se encuentra dentro de lareturn
palabra claveComo nadie lo ha usado
addEventListener
todavía, aquí está mi versión. Dados los elementos:Yo usaría lo siguiente:
Esto le permite cambiar el tipo de evento y la acción por separado mientras mantiene limpio el HTML.
fuente
e.preventDefault()
para que funcione con formularios. Ver mi (nueva) respuesta .if (event.keyCode == 13) { event.preventDefault(); go.click();}
En JavaScript simple,
Noté que la respuesta se da solo en jQuery, así que pensé en dar algo en JavaScript simple también.
fuente
evt.which ? evt.which : evt.keyCode
es igual aevt.which || evt.keyCode
Un truco básico que puedes usar para esto que no he visto completamente mencionado. Si desea realizar una acción ajax, o algún otro trabajo en Enter pero no desea enviar un formulario, puede hacerlo:
Configuración action = "javascript: void (0);" como este es un acceso directo para prevenir esencialmente el comportamiento predeterminado. En este caso, se llama a un método si presiona enter o hace clic en el botón y se realiza una llamada ajax para cargar algunos datos.
fuente
searchCriteria.blur();
alonsubmit
.Intentalo:
fuente
Para activar una búsqueda cada vez que se presiona la tecla Intro, use esto:
fuente
Esto es algo que tengo de un proyecto algo reciente ... Lo encontré en la red, y no tengo idea si hay una mejor manera o no en JavaScript antiguo.
fuente
Uso
keypress
yevent.key === "Enter"
con JS moderno!Documentos de Mozilla
Navegadores Soportados
fuente
Sin embargo, estoy bastante seguro de que, siempre y cuando solo haya un campo en el formulario y un botón de envío, al presionar enter debería enviar el formulario, incluso si hay otro formulario en la página.
Luego puede capturar el formulario enviado con js y hacer cualquier validación o devolución de llamada que desee.
fuente
Nadie notó el html attibute "accesskey" que está disponible desde hace un tiempo.
Esta es una forma sin javascript de atajos de teclado.
La tecla de acceso atribuye accesos directos en MDN
Con la intención de ser utilizado así. El atributo html en sí mismo es suficiente, sin embargo, podemos cambiar el marcador de posición u otro indicador dependiendo del navegador y el sistema operativo. El guión es un enfoque scratch no probado para dar una idea. Es posible que desee utilizar un detector de biblioteca de navegador como el pequeño bowser
fuente
s
.Esta es una solución para todos los amantes de YUI :
En este caso especial, obtuve mejores resultados al usar YUI para activar objetos DOM que han sido inyectados con la funcionalidad del botón, pero esta es otra historia ...
fuente
En Angular2 :
Si no desea comentarios visuales en el botón, es un buen diseño no hacer referencia al botón sino invocar directamente el controlador.
Además, la identificación no es necesaria, otra forma de separación NG2 entre la vista y el modelo.
fuente
En este caso, también desea marcar el botón Intro desde Publicar en el servidor y ejecutar el script Js.
fuente
Este onchange intento Pero se comporta mal con respecto al navegador en ese entonces hacia adelante (en Safari 4.0.5 y Firefox 3.6.3), por lo que, en última instancia, no lo recomendaría.
fuente
Úselo cuando maneja el evento o en la función que llama su controlador de eventos.
Funciona en Internet Explorer y Opera al menos.
fuente
Para jquery mobile tuve que hacer
fuente
.live
está en desuso en jQuery 1.7. ¿Todavía se considera correcto en jQuery Mobile?Para agregar una solución JavaScript completamente simple que aborde el problema de @ icedwater con el envío de formularios , aquí hay una solución completa con
form
.Violín: https://jsfiddle.net/rufwork/gm6h25th/1/
HTML
JavaScript
fuente
En Javascript moderno, no obsoleto (sin
keyCode
oonkeydown
):fuente
Aquí están mis dos centavos. Estoy trabajando en una aplicación para Windows 8 y quiero que el botón registre un evento de clic cuando presiono el botón Enter. Estoy haciendo esto en JS. Intenté un par de sugerencias, pero tuve problemas. Esto funciona bien.
fuente
charCode
13 en otro lugar, estás disparandoprintResult()
.Para hacerlo con jQuery:
Para hacerlo con JavaScript normal:
fuente
Para aquellos que les guste la brevedad y el enfoque moderno js.
donde input es una variable que contiene su elemento input.
fuente
Para JS moderno
keyCode
está en desuso, usekey
en su lugarfuente
En jQuery, puedes usar
event.which==13
. Si tiene unform
, puede usar$('#formid').submit()
(con los oyentes de eventos correctos agregados al envío de dicho formulario).fuente
He desarrollado JavaScript personalizado para lograr esta característica simplemente agregando clase
Ejemplo:
<button type="button" class="ctrl-p">Custom Print</button>
Aquí compruébelo Fiddle
- o -
consulte el ejemplo de ejecución https://stackoverflow.com/a/58010042/6631280
fuente
Esto también podría ayudar, una pequeña función de JavaScript, que funciona bien:
Sé que esta pregunta está resuelta, pero acabo de encontrar algo que puede ser útil para otros.
fuente