Cette logique se déclenche lorsque vous appuyez sur "Entrée" dans l'entrée "Montant", et je ne pense pas qu'elle le devrait (ce n'est pas le cas dans Chrome). Comment puis-je empêcher cela, et sinon l'empêcher dans IE, le gérer de sorte que la logique de l'événement Click ne se déclenche pas.
<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>
Scénario
$("#btnShare").click(function (e) {
// This logic is firing when pressing "Enter" in the "Amount" input
});
- Jquery: 1.7.2
- IE 9
- (Fonctionne dans Chrome)
jquery
internet-explorer
contactmatt
la source
la source
Réponses:
J'ai eu le même problème et je l'ai résolu en ajoutant un
type="button"
attribut à l'<button>
élément, par lequel IE considère le bouton comme un simple bouton au lieu d'un bouton d'envoi (qui est le comportement par défaut d'un<button>
élément).la source
type="button"
dans un<button>
élément. haha ... :) J'espère que je m'en souviendrai pour la prochaine fois.J'ai rencontré ce problème aujourd'hui. IE suppose que si vous appuyez sur la touche Entrée dans l'un des champs de texte, vous souhaitez soumettre le formulaire - même si les champs ne font pas partie d'un formulaire et même si le bouton n'est pas de type «Soumettre».
Vous devez remplacer le comportement par défaut d'IE avec preventDefault (). Dans votre sélecteur jQuery, mettez dans le div qui contient les zones de texte que vous voulez ignorer la touche Entrée - dans votre cas, le div "page". Au lieu de sélectionner le div entier, vous pouvez également spécifier les zones de texte que vous souhaitez ignorer spécifiquement.
la source
J'avais ce problème avec ASP.NET WebForms:
Cela ne peut PAS être résolu en ajoutant simplement type = "button" car ASP.NET le remplace par type = "submit" (vous pouvez voir ce comportement dans le navigateur si vous inspectez l'élément.)
La bonne façon de faire cela dans asp.net est d'ajouter
sur le bouton. ASP ajoutera automatiquement l'attribut type = "button".
la source
IE pense que tout
button
élément est un bouton de soumission (que vous en ayez unform
ou non). Il gère également la pression de laEnter
touche dans un élément de formulaire comme une soumission de formulaire implicite. Donc, comme il pense que vous essayez de soumettre votre formulaire, il pense que cela vous aidera et déclenchera l'click
événement sur (ce qu'il pense être) le bouton d' envoi .Vous pouvez attacher un
keyup
événement auinput
ou aubutton
et vérifier laEnter
clé (e.which === 13
) etreturn false;
la source
Une solution basée sur jQuery qui fait cela pour chaque bouton est:
Cependant, l'événement de clic continuera de remonter jusqu'aux éléments parents pour une raison quelconque ...
la source
Pour Chrome, vous pouvez ajouter
<button type="submit" style="display:none"/>
Parce que dans Chrome, le type de bouton par défaut est "Soumettre"Pour IE, j'ai essayé de faire la même chose avec
type="button"
(dans IE, le type de bouton par défaut est "bouton") mais n'a pas bien fonctionné.Voici donc la solution. En HTML, ajoutez
(keypress)=xxx($event)
dans votre formulaire. Dans TS,Ce qui précède fonctionnera dans tous les scénarios tels que les navigateurs croisés, le clic normal et le flux de tabulations.
la source