Elemen HTML <button> tidak mengirimkan formulir sendiri, sobat ...
Hexagon Theory
6
Sebenarnya, itu ada di beberapa browser. Memiliki formulir, tanpa tombol kirim tetapi sebagai gantinya <button> akan menerapkan fungsi kirim ke sana. Firefox memiliki perilaku ini.
jishi
Saat membaca spesifikasi W3C ini sebenarnya adalah perilaku default, karena tombol memiliki atribut tipe yang defaultnya "dikirimkan".
Saya memiliki pertanyaan yang sama dan ini jelas bukan pertanyaan bodoh, terutama jika Anda telah menjadi pengembang formulir web asp.net sepanjang hidup Anda di mana kami tidak menggunakan html biasa hari itu juga karena kontrol asp.net yang bodoh meludahkan omong kosong ini bagi kami ... itu sebabnya kami akhirnya menjadi bodoh ketika pindah ke MVC dan harus kembali ke taman kanak-kanak untuk mencari tahu bagaimana kode elemen bentuk sederhana lagi. :)
PositiveGuy
Jawaban:
235
<input type="button" />tombol tidak akan mengirimkan formulir - mereka tidak melakukan apa pun secara default. Mereka umumnya digunakan bersama dengan JavaScript sebagai bagian dari aplikasi AJAX.
<input type="submit"> tombol akan mengirimkan formulir di mana pengguna mengkliknya, kecuali jika Anda menentukan sebaliknya dengan JavaScript.
Browser juga dapat menangkap penekanan tombol "Enter" pada formulir dan mengirimkan formulir secara otomatis jika ada tombol kirim, tetapi tidak sebaliknya.
Tn. Shiny dan Baru 安 宇
2
Mereka juga melakukan itu jika Anda memiliki type = "image", yang dapat digunakan untuk memicu pengiriman formulir ketika diklik.
jishi
5
Tn. Shiny dan Baru: Formulir dapat dikirimkan melalui tombol enter tanpa tombol apa pun. Misalnya, cukup fokus pada input teks.
Lasar
3
Anda dapat menggunakan elemen BUTTON, meskipun (kejutan kejutan) ada beberapa masalah dengan mereka ketika menggunakan Browser Favorit Semua Orang (IE). Layak tahu tentang itu.
4
Ini jelas sangat tua tapi saya merasa perlu untuk memberikan 2 sen saya karena saya merasa itu adalah kejatuhan besar menggunakan jenis tombol ... bentuk acara pengiriman TIDAK dipecat dari pengajuan javascript, yang mengarah ke mimpi buruk pemeliharaan potensial.
mothmonsterman
20
'Tombol' hanya itu, sebuah tombol, di mana Anda dapat menambahkan fungsionalitas tambahan menggunakan Javascript. Jenis input 'kirim' memiliki fungsi default untuk mengirimkan formulir yang ada di dalamnya (meskipun, tentu saja, Anda masih dapat menambahkan fungsionalitas tambahan menggunakan Javascript).
Tombol tidak akan mengirimkan formulir sendiri. Ini adalah tombol sederhana yang digunakan untuk melakukan beberapa operasi dengan menggunakan javascript sedangkan Kirim adalah jenis tombol yang secara default mengirimkan formulir setiap kali pengguna mengklik tombol kirim.
IE 8 sebenarnya menggunakan tombol pertama yang ditemui atau tombol. Alih-alih dengan mudah menunjukkan mana yang diinginkan dengan menjadikannya tipe input = kirim pesanan pada halaman sebenarnya signifikan.
Juga harus disebutkan bahwa input bernama type = "submit" juga akan dikirimkan bersama dengan field bernama form lainnya sementara input type bernama "button" tidak akan.
Dengan kata lain, dalam contoh di bawah ini, input bernama name=button1TIDAK AKAN disampaikan sementara input bernama name=submit1AKAN dikirimkan.
Contoh formulir HTML (index.html):
<formaction="checkout.php"method="POST"><!-- this won't get submitted despite being named --><inputtype="button"name="button1"value="a button"><!-- this one does; so the input's TYPE is important! --><inputtype="submit"name="submit1"value="a submit button"></form>
Skrip PHP (checkout.php) yang memproses tindakan formulir di atas:
<?php var_dump($_POST);?>
Tes di atas pada mesin lokal Anda dengan membuat dua file di folder bernama / tmp / test / lalu jalankan server web PHP bawaan dari shell:
Orang akan bertanya-tanya mengapa kita perlu mengirimkan tombol bernama? Itu tergantung pada skrip back-end. Sebagai contoh, plugin WordPress WooCommerce tidak akan memproses halaman Checkout yang diposting kecuali Place Ordertombol bernama juga dikirimkan. Jika Anda mengubah jenisnya dari tombol kirim ke maka tombol ini tidak akan dikirimkan dan dengan demikian formulir Checkout tidak akan pernah diproses.
Ini mungkin detail kecil tapi Anda tahu, iblis ada dalam detailnya.
Apakah ini sesuai dengan spesifikasi atau tergantung browser?
Magnus Lind Oxlund
0
<input type="button">dapat digunakan di mana saja, tidak hanya dalam bentuk dan mereka tidak mengirimkan formulir jika mereka dalam satu. Jauh lebih cocokJavascript .
<input type="submit">harus digunakan hanya dalam bentuk dan mereka akan mengirim permintaan (baik GET atau POST) ke URL yang ditentukan. Mereka tidak boleh diletakkan di tempat HTML mana pun.
Jawaban:
<input type="button" />
tombol tidak akan mengirimkan formulir - mereka tidak melakukan apa pun secara default. Mereka umumnya digunakan bersama dengan JavaScript sebagai bagian dari aplikasi AJAX.<input type="submit">
tombol akan mengirimkan formulir di mana pengguna mengkliknya, kecuali jika Anda menentukan sebaliknya dengan JavaScript.sumber
'Tombol' hanya itu, sebuah tombol, di mana Anda dapat menambahkan fungsionalitas tambahan menggunakan Javascript. Jenis input 'kirim' memiliki fungsi default untuk mengirimkan formulir yang ada di dalamnya (meskipun, tentu saja, Anda masih dapat menambahkan fungsionalitas tambahan menggunakan Javascript).
sumber
Tombol tidak akan mengirimkan formulir sendiri. Ini adalah tombol sederhana yang digunakan untuk melakukan beberapa operasi dengan menggunakan javascript sedangkan Kirim adalah jenis tombol yang secara default mengirimkan formulir setiap kali pengguna mengklik tombol kirim.
sumber
IE 8 sebenarnya menggunakan tombol pertama yang ditemui atau tombol. Alih-alih dengan mudah menunjukkan mana yang diinginkan dengan menjadikannya tipe input = kirim pesanan pada halaman sebenarnya signifikan.
sumber
Juga harus disebutkan bahwa input bernama type = "submit" juga akan dikirimkan bersama dengan field bernama form lainnya sementara input type bernama "button" tidak akan.
Dengan kata lain, dalam contoh di bawah ini, input bernama
name=button1
TIDAK AKAN disampaikan sementara input bernamaname=submit1
AKAN dikirimkan.Contoh formulir HTML (index.html):
Skrip PHP (checkout.php) yang memproses tindakan formulir di atas:
Tes di atas pada mesin lokal Anda dengan membuat dua file di folder bernama / tmp / test / lalu jalankan server web PHP bawaan dari shell:
Buka browser Anda di http: // localhost: 3000 dan lihat sendiri.
Orang akan bertanya-tanya mengapa kita perlu mengirimkan tombol bernama? Itu tergantung pada skrip back-end. Sebagai contoh, plugin WordPress WooCommerce tidak akan memproses halaman Checkout yang diposting kecuali
Place Order
tombol bernama juga dikirimkan. Jika Anda mengubah jenisnya dari tombol kirim ke maka tombol ini tidak akan dikirimkan dan dengan demikian formulir Checkout tidak akan pernah diproses.Ini mungkin detail kecil tapi Anda tahu, iblis ada dalam detailnya.
sumber
<input type="button">
dapat digunakan di mana saja, tidak hanya dalam bentuk dan mereka tidak mengirimkan formulir jika mereka dalam satu. Jauh lebih cocokJavascript
.<input type="submit">
harus digunakan hanya dalam bentuk dan mereka akan mengirim permintaan (baik GET atau POST) ke URL yang ditentukan. Mereka tidak boleh diletakkan di tempat HTML mana pun.sumber
W3C memperjelas, tentang spesifikasi tentang elemen Tombol
Tombol dapat dilihat sebagai kelas umum untuk semua jenis Tombol tanpa perilaku default.
W3C
sumber
type='Submit'
diatur untuk meneruskan & mendapatkan nilai pada BACK-END (PHP, .NET dll).type='button'
akan mencerminkan perilaku tombol normal.sumber