Katakanlah Anda membuat wizard dalam bentuk HTML. Satu tombol kembali, dan satu maju. Karena tombol kembali muncul pertama kali di markup ketika Anda menekan Enter, itu akan menggunakan tombol itu untuk mengirimkan formulir.
Contoh:
<form>
<!-- Put your cursor in this field and press Enter -->
<input type="text" name="field1" />
<!-- This is the button that will submit -->
<input type="submit" name="prev" value="Previous Page" />
<!-- But this is the button that I WANT to submit -->
<input type="submit" name="next" value="Next Page" />
</form>
Saya ingin memutuskan tombol mana yang digunakan untuk mengirimkan formulir ketika pengguna menekan Enter. Dengan begitu, saat Anda menekan Enterwizard akan pindah ke halaman berikutnya, bukan yang sebelumnya. Apakah Anda harus menggunakannya tabindex
untuk melakukan ini?
sumber
Ubah jenis tombol sebelumnya menjadi tombol seperti ini:
Sekarang tombol Next akan menjadi default, ditambah Anda juga bisa menambahkan
default
atribut sehingga browser Anda akan menyorotnya seperti:sumber
default
Atribut apa yang Anda bicarakan? Tidak ada atribut "default", yang akan valid: w3.org/html/wg/drafts/html/master/… (tidak dalam HTML5, HTML 4.01 Transitional / Strict, XHTML 1.0 Strict). Dan saya tidak melihat mengapa mengubah jenis input darisubmit
kebutton
akan lebih baik. Anda dapat memiliki beberapa elemen input jenis kirim dalam satu bentuk tanpa masalah. Saya tidak benar-benar mengerti mengapa jawaban ini sangat terangkat.default
atribut ini adalah atribut Global; atribut enumerated .. yang terkait dengan status enumerasi: w3.org/html/wg/drafts/html/master/… . terlepas dari titik itu .. aspek tombol dari jawaban ini bukanlah jawaban .. itu adalah ' saran bersyarat ' atau kueri ( pertanyaan itu sendiri ).type="button"
tidak mengirimkan formulir,type="submit"
ya, tetapi mengubah jenis tombol ini jelas bukan solusi, karena tombol-tombol ini pada dasarnya harus berperilaku dengan cara yang sama - pertanyaan OP adalah bagaimana membuat tombol "Next" menjadi default untuk menekan tombol Enter. Dan ada solusi yang memungkinkan dalam jawaban yang diterima.default
atribut yang valid untukinput
tag (seperti yang saya sebutkan sebelumnya) dalam HTML, dan browser (populer) TIDAK akan menyorot tombol yang memiliki atribut ini, yang berarti tidak ada implementasi atribut ini yang tidak standar - jadi saya masih tidak tahu apa yang @Wally Lawless bicarakan, dan mengapa jawaban ini sangat berlebihan. Hanya ada satudefault
atribut yang valid yang diperkenalkan dalam HTML5, TETAPI hanya untuk<track>
tag: developer.mozilla.org/en-US/docs/Web/HTML/Element/trackBerikan tombol kirim Anda nama yang sama seperti ini:
Ketika pengguna menekan Enterdan permintaan pergi ke server, Anda bisa memeriksa nilainya untuk
submitButton
kode sisi server Anda yang berisi kumpulanname/value
pasangan formulir . Misalnya, dalam ASP Classic :Referensi: Menggunakan beberapa tombol kirim pada satu formulir
sumber
Jika fakta bahwa tombol pertama digunakan secara default konsisten di seluruh browser, letakkan di sebelah kanan dalam kode sumber, dan kemudian gunakan CSS untuk mengubah posisi semula.
float
mereka ke kiri dan kanan untuk mengubahnya secara visual, misalnya.sumber
Terkadang solusi yang disediakan oleh @palotasb tidak mencukupi. Ada kasus penggunaan di mana misalnya tombol kirim "Filter" ditempatkan di atas tombol seperti "Next dan Previous". Saya menemukan solusi untuk ini: salin tombol kirim yang perlu bertindak sebagai tombol kirim default di div tersembunyi dan letakkan di dalam formulir di atas tombol kirim lainnya. Secara teknis itu akan dikirimkan oleh tombol yang berbeda saat menekan Enter daripada ketika mengklik tombol Next yang terlihat. Tetapi karena nama dan nilainya sama, tidak ada perbedaan dalam hasilnya.
sumber
Saya akan menggunakan JavaScript untuk mengirimkan formulir. Fungsi akan dipicu oleh peristiwa OnKeyPress dari elemen bentuk dan akan mendeteksi apakahEnter kunci itu dipilih. Jika demikian, maka akan mengirimkan formulir.
Berikut adalah dua halaman yang memberikan teknik tentang cara melakukan ini: 1 , 2 . Berdasarkan ini, berikut adalah contoh penggunaan (berdasarkan di sini ):
sumber
Jika Anda benar-benar hanya ingin itu berfungsi seperti dialog instal, cukup berikan fokus ke tombol "Next" OnLoad.
Dengan begitu jika pengguna mengklik Return, formulir mengirimkan dan maju. Jika mereka ingin kembali, mereka dapat menekan Tabatau mengklik tombol.
sumber
Ini tidak dapat dilakukan dengan HTML murni. Anda harus mengandalkan JavaScript untuk trik ini.
Namun, jika Anda menempatkan dua formulir di halaman HTML Anda dapat melakukan ini.
Form1 akan memiliki tombol sebelumnya.
Form2 akan memiliki input pengguna + tombol selanjutnya.
Ketika pengguna menekan Enterdi Form2, tombol Kirim berikutnya akan menyala.
sumber
Anda bisa melakukannya dengan CSS.
Letakkan tombol di markup dengan
Next
tombol pertama, laluPrev
tombol sesudahnya.Kemudian gunakan CSS untuk memposisikan mereka untuk tampil seperti yang Anda inginkan.
sumber
Ini berfungsi tanpa JavaScript atau CSS di sebagian besar browser:
Firefox, Opera, Safari, dan Google Chrome semuanya berfungsi.
Seperti biasa, Internet Explorer adalah masalahnya.
Versi ini berfungsi saat JavaScript diaktifkan:
Jadi kelemahan dalam solusi ini adalah:
Halaman Sebelumnya tidak berfungsi jika Anda menggunakan Internet Explorer dengan menonaktifkan JavaScript.
Pikiran Anda, tombol kembali masih berfungsi!
sumber
Jika Anda memiliki beberapa tombol aktif pada satu halaman maka Anda dapat melakukan sesuatu seperti ini:
Tandai tombol pertama yang ingin Anda picu pada Enterpenekanan tombol sebagai tombol default pada formulir. Untuk tombol kedua, kaitkan dengan Backspacetombol pada keyboard. Kode Backspaceacara adalah 8.
sumber
Mengubah urutan tab harus dilakukan untuk mencapai hal ini. Tetap sederhana.
Pilihan sederhana lainnya adalah dengan meletakkan tombol kembali setelah tombol kirim dalam kode HTML tetapi mengambang ke kiri sehingga muncul di halaman sebelum tombol kirim.
sumber
Simpan nama semua tombol kirim sama - "prev".
Satu-satunya perbedaan adalah
value
atribut dengan nilai unik. Saat kami membuat skrip, nilai-nilai unik ini akan membantu kami mengetahui tombol kirim mana yang ditekan.Dan tuliskan kode berikut:
sumber
name="perv"
?Pilihan sederhana lainnya adalah dengan meletakkan tombol kembali setelah tombol kirim dalam kode HTML, tetapi mengapungkannya ke kiri, sehingga muncul di halaman sebelum tombol kirim.
Mengubah urutan tab harus dilakukan untuk mencapai hal ini. Tetap sederhana.
sumber
Pertama kali saya menghadapi ini, saya datang dengan retas onclick () / JavaScript ketika pilihan tidak berlaku / selanjutnya yang saya masih suka karena kesederhanaannya. Bunyinya seperti ini:
Ketika salah satu tombol kirim diklik, ia menyimpan operasi yang diinginkan dalam bidang tersembunyi (yang merupakan bidang string yang termasuk dalam model yang terkait dengan formulir) dan mengirimkan formulir ke Controller, yang melakukan semua keputusan. Di Controller, Anda cukup menulis:
Anda juga dapat mengencangkannya sedikit menggunakan kode operasi numerik untuk menghindari penguraian string, tetapi kecuali jika Anda bermain dengan enumerasi, kode tersebut kurang dapat dibaca, dimodifikasi, dan didokumentasikan sendiri dan penguraiannya sepele.
sumber
Dari https://html.spec.whatwg.org/multipage/forms.html#implicit-smission
Memiliki input berikutnya menjadi type = "submit" dan mengubah input sebelumnya menjadi type = "button" akan memberikan perilaku default yang diinginkan.
sumber
Inilah yang saya coba:
if
pernyataan yang akan melakukan tindakan yang diperlukan jika salah satu tombol diklik.Dalam PHP,
sumber
Saya menemukan pertanyaan ini ketika mencoba menemukan jawaban pada dasarnya hal yang sama, hanya dengan kontrol ASP.NET, ketika saya tahu bahwa tombol ASP memiliki properti yang disebut
UseSubmitBehavior
yang memungkinkan Anda untuk mengatur mana yang melakukan pengiriman.Hanya dalam kasus seseorang mencari cara tombol ASP.NET untuk melakukannya.
sumber
Dengan JavaScript (di sini jQuery), Anda dapat menonaktifkan tombol prev sebelum mengirimkan formulir.
sumber
Coba ini..!
sumber
Saya memecahkan masalah yang sangat mirip dengan cara ini:
Jika JavaScript diaktifkan (dalam kebanyakan kasus saat ini) maka semua tombol kirim " terdegradasi " ke tombol saat memuat halaman melalui JavaScript (jQuery). Klik peristiwa pada " terdegradasi tombol" tombol diketik juga ditangani melalui JavaScript.
Jika JavaScript tidak diaktifkan maka formulir disajikan ke browser dengan beberapa tombol kirim. Dalam hal ini menekan Enterdi
textfield
dalam formulir akan mengirimkan formulir dengan tombol pertama alih-alih default yang dimaksud , tetapi setidaknya formulir masih dapat digunakan: Anda dapat mengirim dengan tombol prev dan next .Contoh kerja:
sumber
Anda dapat menggunakan
Tabindex
untuk mengatasi masalah ini. Juga mengubah urutan tombol akan menjadi cara yang lebih efisien untuk mencapai ini.Ubah urutan tombol dan tambahkan
float
nilai untuk menetapkannya posisi yang diinginkan yang ingin Anda tunjukkan dalamHTML
tampilan Anda .sumber
Menggunakan contoh yang Anda berikan:
Jika Anda mengklik "Halaman Sebelumnya", hanya nilai "sebelumnya" yang akan dikirimkan. Jika Anda mengklik "Halaman Berikutnya" hanya nilai "berikutnya" akan dikirimkan.
Namun, jika Anda menekan di Entersuatu tempat di formulir, "prev" atau "next" tidak akan dikirimkan.
Jadi menggunakan pseudocode Anda bisa melakukan hal berikut:
sumber