Logika ini aktif saat menekan "Enter" di masukan "Jumlah", dan saya rasa seharusnya tidak (tidak di Chrome). Bagaimana cara mencegah hal ini, dan jika tidak mencegahnya di IE, tangani agar logika di acara klik tidak menyala.
<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>
Naskah
$("#btnShare").click(function (e) {
// This logic is firing when pressing "Enter" in the "Amount" input
});
- Pertanyaan: 1.7.2
- IE 9
- (Bekerja di Chrome)
jquery
internet-explorer
contactmatt
sumber
sumber
Jawaban:
Saya memiliki masalah yang sama dan menyelesaikannya dengan menambahkan
type="button"
atribut ke<button>
elemen, di mana IE menganggap tombol sebagai tombol sederhana, bukan tombol kirim (yang merupakan perilaku default dari suatu<button>
elemen).sumber
type="button"
sebuah<button>
elemen. haha ... :) Semoga saya mengingat ini untuk lain waktu.Saya mengalami masalah ini hari ini. IE mengasumsikan bahwa jika Anda menekan tombol enter di salah satu kolom teks, Anda ingin mengirimkan formulir - meskipun kolom tersebut bukan bagian dari formulir dan bahkan jika tombol tersebut bukan jenis "kirim".
Anda harus mengganti perilaku default IE dengan preventDefault (). Di pemilih jQuery Anda, masukkan div yang berisi kotak teks yang ingin Anda abaikan tombol enter - dalam kasus Anda, div "halaman". Daripada memilih div secara keseluruhan, Anda juga dapat menentukan kotak teks yang ingin Anda abaikan secara spesifik.
sumber
Saya mengalami masalah ini dengan ASP.NET WebForms:
Ini TIDAK dapat diselesaikan hanya dengan menambahkan type = "button" karena ASP.NET menggantinya dengan type = "submit" (Anda dapat melihat perilaku ini di browser jika Anda memeriksa elemen.)
Cara yang benar untuk melakukan ini di asp.net adalah dengan menambahkan
ke tombol. ASP secara otomatis akan menambahkan atribut type = "button".
sumber
IE menganggap
button
elemen apa pun adalah tombol kirim (apakah Anda memilikiform
atau tidak). Ini juga menangani penekananEnter
kunci dalam elemen formulir sebagai pengiriman formulir implisit. Jadi, karena dianggap Anda mencoba mengirimkan formulir Anda, ia memperkirakan itu akan membantu Anda keluar dan mengaktifkanclick
acara di (menurut pendapatnya) tombol kirim .Anda dapat melampirkan
keyup
acara keinput
ataubutton
dan memeriksaEnter
key (e.which === 13
) danreturn false;
sumber
Solusi berbasis jQuery yang melakukan ini untuk setiap tombol adalah:
Namun peristiwa klik masih akan menggelembung ke elemen induk karena beberapa alasan ...
sumber
Untuk Chrome Anda dapat menambahkan
<button type="submit" style="display:none"/>
Karena Di chrome jenis tombol default adalah "kirim 'Untuk IE, saya telah mencoba yang sama dengan
type="button"
(Dalam jenis tombol default IE adalah "tombol") Tetapi tidak bekerja dengan baik.Jadi inilah solusinya. Dalam HTML tambahkan
(keypress)=xxx($event)
di formulir Anda. Di TS,Hal di atas akan berfungsi di semua skenario seperti lintas browser, klik normal, dan aliran tab.
sumber