Diese Logik wird ausgelöst, wenn Sie in der Eingabe "Betrag" die Eingabetaste drücken, und ich glaube nicht, dass dies der Fall sein sollte (in Chrome nicht). Wie kann ich dies verhindern und wenn nicht, verhindern Sie es im IE, damit die Logik im Klickereignis nicht ausgelöst wird.
<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>
Skript
$("#btnShare").click(function (e) {
// This logic is firing when pressing "Enter" in the "Amount" input
});
- Anfrage: 1.7.2
- IE 9
- (Funktioniert in Chrome)
jquery
internet-explorer
Kontaktmatt
quelle
quelle
Antworten:
Ich hatte das gleiche Problem und löste es, indem ich
type="button"
dem<button>
Element ein Attribut hinzufügte , wodurch der IE die Schaltfläche als einfache Schaltfläche anstelle einer Senden-Schaltfläche betrachtet (was das Standardverhalten eines<button>
Elements ist).quelle
type="button"
in einem<button>
Element rufen zu müssen . haha ... :) Hoffentlich erinnere ich mich für das nächste Mal daran.Ich bin heute auf dieses Problem gestoßen. IE geht davon aus, dass Sie das Formular senden möchten, wenn Sie die Eingabetaste in einem der Textfelder drücken - auch wenn die Felder nicht Teil eines Formulars sind und die Schaltfläche nicht vom Typ "Senden" ist.
Sie müssen das Standardverhalten des IE mit PreventDefault () überschreiben. Geben Sie in Ihrem jQuery-Selektor das div ein, das die Textfelder enthält, in denen Sie die Eingabetaste ignorieren möchten - in Ihrem Fall das div "page". Anstatt das gesamte div auszuwählen, können Sie auch die Textfelder angeben, die Sie speziell ignorieren möchten.
quelle
Ich hatte dieses Problem mit ASP.NET WebForms:
Dies kann NICHT durch einfaches Hinzufügen von type = "button" gelöst werden, da ASP.NET es durch type = "submit" ersetzt (Sie können dieses Verhalten im Browser sehen, wenn Sie das Element untersuchen.)
Der richtige Weg, dies in asp.net zu tun, ist das Hinzufügen
auf die Schaltfläche. ASP fügt automatisch das Attribut type = "button" hinzu.
quelle
IE glaubt, dass jedes
button
Element eine Senden- Schaltfläche ist (unabhängig davon, ob Sie eine habenform
oder nicht). Das Drücken derEnter
Taste in einem Formularelement wird auch als implizite Formularübermittlung behandelt. Da es denkt, dass Sie versuchen, Ihr Formular einzureichen, hilft es Ihnen, dasclick
Ereignis auf der Schaltfläche " Senden" auszulösen (was es denkt) .Sie können ein
keyup
Ereignis an dasinput
oder das anhängenbutton
und nach demEnter
Schlüssel (e.which === 13
) und suchenreturn false;
quelle
Eine jQuery-basierte Lösung, die dies für jede Schaltfläche ausführt, ist:
Das Klickereignis sprudelt jedoch aus irgendeinem Grund immer noch zu übergeordneten Elementen ...
quelle
Für Chrome können Sie hinzufügen
<button type="submit" style="display:none"/>
Da Standard In Chrom Button - Typ ist „submit‘Für IE habe ich versucht, dasselbe mit
type="button"
(Im IE ist der Standardschaltflächentyp "Schaltfläche"), aber es hat nicht gut funktioniert.Hier ist also die Lösung. Fügen Sie
(keypress)=xxx($event)
in HTML Ihr Formular hinzu. In TSDas Obige funktioniert in allen Szenarien wie Cross-Browser, normalem Klick und Tab-Flow.
quelle