Yah saya mencoba mengirimkan formulir dengan menekan enter tetapi tidak menampilkan tombol kirim. Saya tidak ingin masuk ke JavaScript jika memungkinkan karena saya ingin semuanya berfungsi di semua browser (satu-satunya cara JS yang saya tahu adalah dengan acara).
Sekarang bentuknya terlihat seperti ini:
<form name="loginBox" target="#here" method="post">
<input name="username" type="text" /><br />
<input name="password" type="password" />
<input type="submit" style="height: 0px; width: 0px; border: none; padding: 0px;" hidefocus="true" />
</form>
Itu bekerja dengan cukup baik. Tombol kirim berfungsi ketika pengguna menekan masuk, dan tombol tidak muncul di Firefox, IE, Safari, Opera dan Chrome. Namun, saya masih tidak suka solusinya karena sulit untuk mengetahui apakah itu akan berfungsi pada semua platform dengan semua browser.
Adakah yang bisa menyarankan metode yang lebih baik? Atau ini tentang sebaik yang didapatnya?
Jawaban:
Mencoba:
Itu akan menekan tombol waaay ke kiri, keluar dari layar. Yang menyenangkan dengan ini adalah, Anda akan mendapatkan degradasi yang anggun ketika CSS dinonaktifkan.
Pembaruan - Penanganan masalah untuk IE7
Seperti yang disarankan oleh Bryan Downing + dengan
tabindex
untuk mencegah tab mencapai tombol ini (oleh Ates Goral):sumber
position: absolute; width: 1px; height: 1px; left: -9999px;
tabindex="-1"
Saya pikir Anda harus pergi dengan rute Javascript, atau setidaknya saya akan:
sumber
keydown
darikeypress
untuk dukungan yang lebih luas, tetapi Anda juga perlu menambahkane.preventDefault();
sebelumif
jika Anda berharap untuk mendukung Chrome..on('keypress'...)
. Docs untuk.on()
terlihat seperti.preventDefault()
panggilan untuk Anda.Sudahkah Anda mencoba ini?
Karena sebagian besar browser mengerti
visibility:hidden
dan tidak benar-benar berfungsidisplay:none
, saya kira itu seharusnya baik-baik saja. Belum benar-benar mengujinya sendiri, jadi CMIIW.sumber
visibility: hidden
: seperti yang dapat Anda baca di w3schools , visibity: tidak ada yang mempengaruhi tata letak. Jika Anda ingin menghindari ruang kosong ini, solusi dengan penentuan posisi absolut tampaknya lebih baik bagi saya.<input type="submit" style="visibility: hidden; position: absolute;" />
position: absolute; left: -100px; width: 1px; height: 1px;
Solusi lain tanpa tombol kirim:
HTML
jQuery
sumber
Bagi siapa pun yang melihat jawaban ini di masa mendatang, HTML5 mengimplementasikan atribut baru untuk elemen formulir
hidden
,, yang akan secara otomatis berlakudisplay:none
untuk elemen Anda.misalnya
sumber
Gunakan kode berikut, ini memperbaiki masalah saya di semua 3 browser (FF, IE dan Chrome):
Tambahkan baris di atas sebagai baris pertama dalam kode Anda dengan nilai nama dan nilai yang sesuai.
sumber
Alih-alih retasan yang saat ini Anda gunakan untuk menyembunyikan tombol, itu akan jauh lebih mudah untuk ditetapkan
visibility: collapse;
dalam atribut style. Namun, saya tetap merekomendasikan menggunakan sedikit Javascript sederhana untuk mengirimkan formulir. Sejauh yang saya mengerti, dukungan untuk hal-hal seperti itu ada di mana-mana saat ini.sumber
Cukup atur atribut tersembunyi ke true:
sumber
Cara paling elegan untuk melakukan ini adalah mempertahankan tombol submit, tetapi atur border, padding dan font-size menjadi 0.
Ini akan membuat dimensi tombol 0x0.
Anda dapat mencobanya sendiri, dan dengan menetapkan garis besar ke elemen, Anda akan melihat sebuah titik, yang merupakan batas luar "yang mengelilingi" elemen 0x0 px.
Tidak perlu untuk visibilitas: tersembunyi, tetapi jika itu membuat Anda tidur di malam hari, Anda bisa melemparkannya ke dalam campuran juga.
JS Fiddle
sumber
IE tidak mengizinkan menekan tombol ENTER untuk pengiriman formulir jika tombol kirim tidak terlihat, dan formulir memiliki lebih dari satu bidang. Berikan apa yang diinginkannya dengan memberikan gambar transparan 1x1 piksel sebagai tombol kirim. Tentu saja akan membutuhkan piksel tata letak, tetapi lihat apa yang harus Anda lakukan untuk menyembunyikannya.
sumber
Ini adalah solusi saya, diuji di Chrome, Firefox 6 dan IE7 +:
sumber
Ini berfungsi dengan baik dan ini adalah versi paling eksplisit dari apa yang Anda coba capai.
Perhatikan bahwa ada perbedaan antara
display:none
danvisibility:hidden
untuk elemen formulir lainnya.sumber
Solusi HTML5
sumber
cara paling sederhana
sumber
Bagi mereka yang memiliki masalah dengan IE dan untuk orang lain juga.
sumber
float: left;
, ketika dihapus, itu tunduk.Anda juga bisa mencoba ini
Anda dapat memasukkan gambar dengan lebar / tinggi = 0 px
sumber
Saya bekerja dengan banyak kerangka UI. Banyak dari mereka memiliki kelas bawaan yang dapat Anda gunakan untuk menyembunyikan sesuatu secara visual.
Bootstrap
Bahan Sudut
Pikiran brilian yang menciptakan kerangka kerja ini telah mendefinisikan gaya-gaya ini sebagai berikut:
sumber
Saya menambahkannya ke fungsi pada dokumen siap. Jika tidak ada tombol kirim pada formulir (semua Formulir Dialog Jquery saya tidak memiliki tombol kirim), tambahkan.
sumber
sumber
Saya telah menggunakan:
dan:
dalam file .css. Itu bekerja secara ajaib untuk saya juga. :)
sumber