Ta logika uruchamia się po naciśnięciu „Enter” w polu „Kwota” i nie sądzę, aby tak było (nie działa w Chrome). Jak mogę temu zapobiec, a jeśli nie, w IE, załatw to tak, aby logika zdarzenia kliknięcia nie została uruchomiona.
<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>
Scenariusz
$("#btnShare").click(function (e) {
// This logic is firing when pressing "Enter" in the "Amount" input
});
- JQuery: 1.7.2
- IE 9
- (Działa w Chrome)
jquery
internet-explorer
contactmatt
źródło
źródło
Odpowiedzi:
Miałem ten sam problem i rozwiązałem go, dodając
type="button"
atrybut do<button>
elementu, dzięki czemu IE uważa przycisk za prosty przycisk zamiast przycisku przesyłania (co jest domyślnym zachowaniem<button>
elementu).źródło
type="button"
jakiegoś<button>
elementu. haha ... :) Miejmy nadzieję, że zapamiętam to następnym razem.Dzisiaj napotkałem ten problem. IE zakłada, że jeśli naciśniesz klawisz enter w którymkolwiek z pól tekstowych, chcesz przesłać formularz - nawet jeśli pola nie są częścią formularza i nawet jeśli przycisk nie jest typu „wyślij”.
Musisz nadpisać domyślne zachowanie IE za pomocą PreventDefault (). W selektorze jQuery umieść element div zawierający pola tekstowe, które mają zignorować klawisz Enter - w twoim przypadku element div „page”. Zamiast wybierać cały element div, możesz również określić pola tekstowe, które chcesz specjalnie ignorować.
źródło
Miałem ten problem z ASP.NET WebForms:
Nie można tego rozwiązać, dodając po prostu type = "button", ponieważ ASP.NET zastępuje go typem type = "submit" (możesz zobaczyć to zachowanie w przeglądarce, jeśli sprawdzisz element).
Prawidłowym sposobem na zrobienie tego w asp.net jest dodanie
do przycisku. ASP automatycznie doda atrybut type = "button".
źródło
IE uważa, że każdy
button
element jest przyciskiem przesyłania (niezależnie od tego, czy masz,form
czy nie). Obsługuje również naciśnięcieEnter
klawisza w elemencie formularza jako niejawne przesłanie formularza. Tak więc, ponieważ sądzi, że próbujesz przesłać formularz, uważa, że pomoże ci to i uruchomiclick
zdarzenie (tak jak myśli) przyciskiem przesyłania .Możesz dołączyć
keyup
zdarzenie doinput
lubbutton
i sprawdzićEnter
klucz (e.which === 13
) ireturn false;
źródło
Rozwiązanie oparte na jQuery, które robi to dla każdego przycisku, to:
Jednak z jakiegoś powodu zdarzenie kliknięcia nadal będzie widoczne w elementach nadrzędnych ...
źródło
W przypadku przeglądarki Chrome można dodać,
<button type="submit" style="display:none"/>
ponieważ domyślny typ przycisku w przeglądarce Chrome to „wyślij”W przypadku IE próbowałem zrobić to samo z
type="button"
(w IE domyślny typ przycisku to „przycisk”), ale nie zadziałał dobrze.Oto rozwiązanie. W HTML dodaj
(keypress)=xxx($event)
swój formularz. W TSPowyższe będzie działać we wszystkich scenariuszach, takich jak różne przeglądarki, normalne klikanie i przepływ kart.
źródło