Saya melakukan hal berikut:
<a href="www.stackoverflow.com">
<button disabled="disabled" >ABC</button>
</a>
Ini berfungsi baik tetapi saya mendapatkan kesalahan validasi HTML5 yang mengatakan "Elemen 'tombol' tidak boleh bersarang di dalam elemen 'tombol'.
Adakah yang bisa memberi saya nasihat tentang apa yang harus saya lakukan?
Jawaban:
Tidak , itu bukan HTML5 yang valid menurut Dokumen Spesifikasi HTML5 dari W3C :
Dengan kata lain, Anda dapat membuat sarang elemen apa pun di dalam
<a>
kecuali yang berikut:<a>
<audio>
(jika atribut kontrol hadir)<button>
<details>
<embed>
<iframe>
<img>
(jika atribut usemap ada)<input>
(jika atribut type tidak dalam keadaan tersembunyi )<keygen>
<label>
<menu>
(jika atribut type dalam status toolbar )<object>
(jika atribut usemap ada)<select>
<textarea>
<video>
(jika atribut kontrol hadir)Jika Anda mencoba memiliki tombol yang tertaut ke suatu tempat, bungkus tombol itu di dalam
<form>
tag sebagai berikut:Namun, jika
<button>
tag Anda ditata menggunakan CSS dan tidak terlihat seperti widget sistem ... Bantu diri Anda sendiri, buat kelas baru untuk<a>
tag Anda dan gaya dengan cara yang sama.sumber
<div>
dalam<a>
benar-benar valid dalam HTML5: validator.w3.org/nu/…Jika Anda menggunakan Bootstrap 3 , ini berfungsi dengan baik
sumber
Tidak.
Solusi berikut bergantung pada JavaScript.
Jika tombol tersebut akan ditempatkan di dalam yang ada
<form>
denganmethod="post"
, kemudian memastikan tombol memiliki atributtype="button"
sebaliknya tombol akan menyerahkan operasi POST. Dengan cara ini Anda dapat memiliki<form>
yang berisi campuran tombol operasi GET dan POST.sumber
<a>
dalam<button>
(dengan yang samahref
) sebagai cadangan jika JS dinonaktifkan, dan enam bulan dari sekarang saya pasti akan malu bahwa saya mengakuinya.Saya baru saja melompat ke masalah yang sama dan saya menyelesaikannya dengan mengganti tag 'tombol' ke tag 'span'. Dalam kasus saya, saya menggunakan bootstrap. Begini tampilannya:
sumber
<a>
, yang merupakan bagian dari tautan, tetapi tidak ditata seperti tombol. Misalnya, klik apa pun dalamdiv
(gambar, latar belakang, teks, dll) menuju ke tautan, tetapi hanya yangspan
tampak seperti tombol.Akan sangat aneh jika itu valid, dan saya berharap itu tidak valid. Apa artinya memiliki satu elemen yang dapat diklik di dalam elemen yang dapat diklik lainnya? Yang mana itu - tombol, atau tautan?
sumber
border: 2px outset
. Jika Anda ingin sedikit berbelok di tikungan, Anda bisa menggunakan batas-radius juga.<img>
Tag sederhana juga akan berfungsi dengan baik.Pilihan lain adalah menggunakan atribut onclick tombol:
Ini berfungsi, namun, pengguna tidak akan melihat tautan yang ditampilkan di hover seperti yang akan mereka lakukan jika berada di dalam elemen.
sumber
Saat ini bahkan jika spek tidak mengizinkannya, "sepertinya" masih berfungsi untuk menyematkan tombol di dalam
<a href...><button ...></a>
tag, FWIW ...sumber
<button>
tidak terkandung dalam a<form>
. Namun, segera setelah tombol terkandung (mis.<form>...<a><button>
) Ini berhenti berfungsi, kecuali ada yang menonaktifkan handler klik-tombol. Ini cukup rotasi untuk menjamin menghindari skenario ini.Anda dapat menambahkan kelas ke tombol dan menempatkan beberapa skrip mengarahkannya.
Saya melakukannya dengan cara ini:
sumber
kenapa tidak..kamu juga bisa menanamkan gambar pada tombol juga
sumber
Penjelasan dan solusi yang berfungsi di sini: Howto: div dengan onclick di dalam div lain dengan onclick javascript
dengan menjalankan skrip ini di penangan klik dalam Anda:
sumber
Adalah ilegal di HTML5 untuk menyematkan elemen tombol di dalam tautan.
Lebih baik menggunakan CSS pada status default dan: aktif (ditekan):
sumber
Saya mencoba solusi javascript Anda, tetapi untuk pekerjaan saya harus memasukkan
e.preventDefault();
fungsi javascript saya.sumber
Gunakan atribut formaction di dalam tombol
PS! Ini hanya berfungsi jika tombol Anda ketik "kirim"
sumber
sumber