Esta lógica se activa al presionar "Enter" en la entrada "Cantidad", y no creo que deba hacerlo (no lo hace en Chrome). ¿Cómo puedo evitar esto, y si no prevenirlo en IE, manejarlo para que la lógica en el evento de clic no se active?
<html>
<body>
<div id="page">
<div id="financed_amount">
<h1>Financed Amount:</h1>
<input type="text" id="amount" value="" />
</div>
<h1>Finance Options</h1>
<div>
<a id="shareLink" rel="leanModal" name="email" href="#email"></a>
<button id="btnShare" class="share">Share this report</button>
</div>
</div>
</body>
</html>
Guión
$("#btnShare").click(function (e) {
// This logic is firing when pressing "Enter" in the "Amount" input
});
- Jquery: 1.7.2
- IE 9
- (Funciona en Chrome)
jquery
internet-explorer
contactmatt
fuente
fuente
Respuestas:
Tuve el mismo problema y lo resolví agregando un
type="button"
atributo al<button>
elemento, por lo que IE piensa que el botón es un botón simple en lugar de un botón de envío (que es el comportamiento predeterminado de un<button>
elemento).fuente
type="button"
en un<button>
elemento. jaja ... :) Espero recordar esto para la próxima vez.Hoy me encontré con este problema. IE asume que si presiona la tecla Intro en cualquiera de los campos de texto, desea enviar el formulario, incluso si los campos no son parte de un formulario e incluso si el botón no es del tipo "enviar".
Debe anular el comportamiento predeterminado de IE con preventDefault (). En su selector de jQuery, coloque el div que contiene los cuadros de texto que desea ignorar la tecla enter - en su caso, el div "page". En lugar de seleccionar todo el div, también puede especificar los cuadros de texto que desea ignorar específicamente.
fuente
Estaba teniendo este problema con ASP.NET WebForms:
Esto NO se puede resolver simplemente agregando type = "button" porque ASP.NET lo reemplaza con type = "submit" (puede ver este comportamiento en el navegador si inspecciona el elemento).
La forma correcta de hacer esto en asp.net es agregar
al botón. ASP agregará automáticamente el atributo type = "button".
fuente
IE cree que cualquier
button
elemento es un botón de envío (ya sea que tengaform
o no). También maneja la pulsación de laEnter
tecla en un elemento de formulario como un envío de formulario implícito. Entonces, dado que cree que está tratando de enviar su formulario, cree que lo ayudará y activará elclick
evento en (lo que cree que es) el botón de envío .Puede adjuntar un
keyup
evento alinput
o albutton
y buscar laEnter
clave (e.which === 13
) yreturn false;
fuente
Una solución basada en jQuery que hace esto para cada botón es:
Sin embargo, el evento de clic seguirá apareciendo en los elementos principales por alguna razón ...
fuente
Para Chrome, puede agregar
<button type="submit" style="display:none"/>
porque en Chrome el tipo de botón predeterminado es "enviar"Para IE, he intentado lo mismo con
type="button"
(en IE el tipo de botón predeterminado es "botón") pero no funcionó bien.Así que aquí está la solución. En HTML agregue
(keypress)=xxx($event)
en su formulario. En TS,Lo anterior funcionará en todos los escenarios, como navegadores cruzados, clic normal y flujo de pestañas.
fuente