A continuación se muestra un código que redirige a las personas a una página del mismo nombre. Por ejemplo, si escribo la palabra 'chocolate' y hago clic en 'Enviar', el usuario debería ser redirigido a una página del mismo nombre llamada 'chocolate.html', etc.
Este código solo funciona cuando se elimina la etiqueta del parámetro <form>, y si se elimina implica hacer clic manualmente en el botón [Enviar] para ser redirigido a la página .html del mismo nombre (en lugar de redirigir al presionar [Enter] o [Return] tecla del teclado).
Este código no funciona cuando agrego la etiqueta del parámetro <form>; solo funciona si se elimina. Me he entrometido con esto durante horas para que funcione con la etiqueta <form>. ¿Algunas ideas?
Este es el código:
Nota: si elimina la etiqueta del formulario, funcionará, pero solo cuando haga clic en el botón 'Enviar' manualmente.
Esto es lo que obtuve hasta ahora, ahora solo necesito que el botón haga clic automáticamente cuando la persona presiona la tecla Intro en su teclado. :)
ACTUALIZACIÓN: En primer lugar, muchas gracias por su ayuda hasta ahora.
ACTUALIZACIÓN: el código ahora redirige correctamente a una página .html del mismo nombre, pero el usuario debe hacer clic manualmente en el botón [Enviar] para lograrlo. A partir de aquí, simplemente necesito encontrar una manera de seleccionar/hacer clic automáticamente en el botón [Enter] cada vez que el usuario presiona [Enter] en su teclado. :)
<input id="test" type="text" autofocus> <button type="button" onclick="redirect()">Submit</button> <script> function redirect() { var url=document.getElementById('test').value window.location = url+".html" } </script>Agrega un atributo de tipo a tu botón así:
<button type="button" onclick="redirect()">Submit</button> De forma predeterminada, si no se establece, se supone que el tipo de botón es submit y, por lo tanto, enviará su formulario a la acción proporcionada en el atributo de acción del formulario. Establecer el atributo de tipo en button evita este comportamiento predeterminado.
Al ver que no tiene un atributo de acción especificado en su formulario, se asume que la página actual es la acción a la que redirigir, por lo que el formulario esencialmente vuelve a cargar la página actual.
Esto es algo nuevo. De todos modos, la cosa es que cuando mantienes la etiqueta del formulario allí, sin ningún atributo de acción que te mantenga en la misma página. Cuando la etiqueta de formulario está allí, no puede presionar el script para la redirección.
Cuando elimina la etiqueta del formulario, presiona el JS y activa el código. Al ver la etiqueta del formulario, asumo que está intentando enviar algunos datos.
Se recomienda que utilice jquery y ajax para manipular estos datos. O usted puede discutir más.
Agregue esto después de su función:
var test_keydown = document.getElementById("test"); test_keydown.addEventListener("keydown", function (e) { if (e.code === "Enter") { //checks whether the pressed key is "Enter" redirect(); } });