En primer lugar, no es necesario conectar manualmente un evento para presentar un formulario cuando el usuario presiona entrar - el navegador ya que maneja.
Curiosamente, esto tenía que ver con el orden de los elementos, las asociaciones de formas implícitas, así como con el hecho de que IE maneja los botones como elementos de envío.
intentar cambiar el orden de estos botones para ver lo que quiero decir:
<input type="text" />
<input type="submit" value="Submit" />
<button>Some button</button>
Naturalmente, el navegador ya tiene instrucciones para escuchar a responder a la Introduzca en un texto de entrada. Esto da como resultado que el navegador haga clic en el botón de envío asociado. Además, dado que no ha proporcionado explícitamente un form
, o elementos asociados entre sí a través de su atributo form
, el navegador está intentando hacer esa relación por usted.
En su código, se suponía que el elemento <button>
era el botón de envío de la entrada de texto (porque era el primer botón de envío en la forma implícita). Como tal, cada vez que presione Ingrese en la entrada de texto, el explorador naturalmente activa el evento de clic del botón asociado.
Si vuelve a ordenar los elementos, como he mencionado anteriormente, vemos lo contrario. IE asocia el otro elemento <input>
con el cuadro de texto. Y al presionar Ingresar en el cuadro de texto aumenta implícitamente el evento de clic en la entrada de envío.
Puede confirmar este comportamiento comparando los atributos .form
de varios elementos. Por ejemplo, la adición de algunos id
valores nos dará un acceso más fácil a las siguientes:
<button id="fiz">Some Button</button>
<input id="foo" type="text" />
<input id="bar" type="submit" value="Submit" />
A continuación, ejecute algunas comparaciones rápidas:
var button = document.getElementById("fiz");
var text = document.getElementById("foo");
var submit = document.getElementById("bar");
button.form === text.form; // true
submit.form === text.form; // true
button.form === submit.form; // true
Así que al final, le toca a usted para eliminar la ambigüedad entre el dos botones, declarando que el elemento <button>
es type='button'
, o colocándolo después del botón de envío previsto.
¿No se envía al presionar Entrar en un comportamiento estándar del campo de entrada? – Bergi
@Bergi que es verdadero si considera el campo 'input' como parte de la misma' forma' que el 'button', y también que el' button' tiene que ser de 'type =" submit'' para ser activado como acción por defecto. – bPratik