Esta lógica é disparada ao pressionar "Enter" na entrada "Amount", e eu não acredito que deveria (não acontece no Chrome). Como posso evitar isso, e se não impedir no IE, trate disso para que a lógica no evento de clique não seja disparada.
<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>
Roteiro
$("#btnShare").click(function (e) {
// This logic is firing when pressing "Enter" in the "Amount" input
});
- Jquery: 1.7.2
- IE 9
- (Funciona no Chrome)
jquery
internet-explorer
contactmatt
fonte
fonte
Respostas:
Eu tive o mesmo problema e resolvi-o adicionando um
type="button"
atributo ao<button>
elemento, pelo qual o IE pensa o botão como um botão simples em vez de um botão de envio (que é o comportamento padrão de um<button>
elemento).fonte
type="button"
um<button>
elemento. haha ... :) Espero me lembrar disso da próxima vez.Corri para este problema hoje. O IE assume que se você pressionar a tecla Enter em qualquer um dos campos de texto, deseja enviar o formulário - mesmo se os campos não fizerem parte de um formulário e mesmo se o botão não for do tipo "enviar".
Você deve substituir o comportamento padrão do IE com preventDefault (). Em seu seletor jQuery, coloque a div que contém as caixas de texto que você deseja ignorar a tecla enter - no seu caso, a div "página". Em vez de selecionar todo o div, você também pode especificar as caixas de texto que deseja ignorar especificamente.
fonte
Eu estava tendo este problema com ASP.NET WebForms:
Isso NÃO pode ser resolvido apenas adicionando type = "button" porque o ASP.NET o substitui por type = "submit" (você pode ver esse comportamento no navegador se inspecionar o elemento).
A maneira correta de fazer isso no asp.net é adicionar
para o botão. ASP adicionará automaticamente o atributo type = "button".
fonte
O IE pensa que qualquer
button
elemento é um botão de envio (quer você tenhaform
ou não). Ele também lida com o pressionamento daEnter
tecla em um elemento de formulário como um envio de formulário implícito. Portanto, como ele pensa que você está tentando enviar seu formulário, ele vai ajudá-lo e acionar oclick
evento (o que ele pensa ser) no botão de envio .Você pode anexar um
keyup
evento aoinput
ou aobutton
e verificar aEnter
chave (e.which === 13
) ereturn false;
fonte
Uma solução baseada em jQuery que faz isso para todos os botões é:
No entanto, o evento de clique ainda aparecerá como elemento pai por algum motivo ...
fonte
Para o Chrome, você pode adicionar
<button type="submit" style="display:none"/>
porque no Chrome o tipo de botão padrão é "enviar"Para o IE, tentei fazer o mesmo com
type="button"
(no IE, o tipo de botão padrão é "botão"), mas não funcionou bem.Então aqui está a solução. Em HTML, adicione
(keypress)=xxx($event)
em seu formulário. Em TS,O procedimento acima funcionará em todos os cenários, como navegadores cruzados, clique normal e fluxo de guias.
fonte