input type = “send” Vs düğme etiketi değiştirilebilir mi?


233

input type="submit"ve buttonetiketi değiştirilebilir mi? veya herhangi bir fark varsa Ne zaman input type="submit"ve ne zaman kullanılır button?

Fark yoksa, neden aynı amaçla 2 etiketimiz var?



Bir kaçının komik kullanırken gün buttonve valueIE bazı sürümünde nitelik, inputsadece, IE bazı sürümü ile iyi oynamıyor beklediğim gönderecek buttons.
Rubens Mariuzzo

Cevaplar temel olarak input type="button"vs vs ile aynıdır button type=button: stackoverflow.com/questions/469059/…
Ciro Santilli 法轮功 冠状 病 六四 事件 法轮功 26:14

Yanıtlar:


131

http://www.w3.org/TR/html4/interact/forms.html#h-17.5

BUTTON öğesiyle oluşturulan düğmeler, INPUT öğesiyle oluşturulan düğmeler gibi çalışır, ancak daha zengin oluşturma olanakları sunar: BUTTON öğesinin içeriği olabilir. Örneğin, bir görüntü işlevi içeren ve türü "görüntü" olarak ayarlanmış ancak BUTON öğesi türü içeriğe izin veren bir INPUT öğesine benzeyen bir BUTTON öğesi içeriğe izin verir.

Yani işlevsellik için sadece değiştirilebilirler!

(Unutmayın, type="submit"varsayılan değerdir button, bu yüzden bırakın!)


7
Sadece dikkat edin, IE6 sayfadaki tüm düğmelerin değerlerini gönderir, bu da tam olarak hangi düğmenin tıklandığını belirlemeyi zorlaştırır. Açıklama: vancelucas.com/blog/ie6-and-multiple-button-submit-elements
Sam

6
Bilginize Eğer yok olması kullanmak type="submit"için varsayılan olarak, düğme ile typeise submit.
sync

8
W3C'nin söylediği bu, ancak typevarsayılanın olduğu vakaları gördüğümden eminim button. Herhangi bir tarayıcı tutarsızlığından kaçınmak için her özelliği açıklamayı tercih ederim.
MatTheCat

5
referansa göre evet. ancak tüm tarayıcılar referans özelliklere bağlı değil, değil mi?
EKanadily

2
@chharvey, hiçbirinin alt düğümü olamaz; metin olmayan içerik. Sanırım kısalıktan başka, ikincisinin var olmasının bir nedeni olmadığını söyleyebilirsiniz.
Paul Draper

71

<input type="button">Sadece bir butona ve tek başına bir şey yapmaz. <input type="submit">Tıklandığında form öğesi içine formu göndermek ne zaman.

Başka bir yararlı 'özel' düğme <input type="reset">formu temizleyecektir.


5
Soru, <input type = "button"> düğmesi etiketiyle ilgili değil
Caltor

7
Soru hakkında <input>ve <button>etiketleri. <input>Cevabınız hakkında yararlı bilgiler verdiniz , ancak bu konuda <button>yan yok.
Pmpr

43

<İnput type = "button" ..> yerine <düğmesi> etiketini kullanın . Bootstrap 3'te tavsiye edilen uygulamadır.

http://getbootstrap.com/css/#buttons-tags

"Çapraz tarayıcı oluşturma

En iyi uygulama olarak, eşleşen tarayıcılar arası oluşturmayı sağlamak için mümkün olduğunda <düğmesi> öğesini kullanmanızı önemle öneririz.

Diğer şeylerin yanı sıra, <input> tabanlı düğmelerin satır yüksekliğini ayarlamamızı engelleyen ve Firefox'taki diğer düğmelerin yüksekliğiyle tam olarak eşleşmemelerine neden olan bir Firefox hatası var. "


4
Bunun için +1. buttonçok daha açıktır ve ariaerişilebilirlik özellikleriyle birlikte gelir ve şekillendirilmesi çok daha kolaydır. HTML5 olduğu gibi ileri görüşlüdür.
user1429980

37

Her iki öğe de işlevsel olarak aynı sonucu vermesine rağmen *, kesinlikle kullanmanızı öneririz<button> :

  • Çok daha açık ve okunabilir. inputkontrolün düzenlenebilir olduğunu veya kullanıcı tarafından düzenlenebileceğini önerir ; buttonhizmet ettiği amaç açısından çok daha açık
  • CSS'de stil oluşturmak daha kolay; yukarıda belirtildiği gibi, FIrefox ve IE input[type="submit"]bazı durumlarda doğru görüntülenmeyen tuhaflıklar var
  • Öngörülebilir istekler: Değerler sunucuya POST/ GETistekte gönderildiğinde IE çok davranıyor
  • Biçimlendirme dostu; düğmenin içindeki öğeleri, örneğin simgeleri iç içe yerleştirebilirsiniz.
  • HTML5, ileri görüşlü; geliştiriciler olarak, resmi hale getirildikten sonra yeni spesifikasyonu benimsemek bizim sorumluluğumuzdur. HTML5, şu an itibariyle, bir yıldan uzun bir süredir resmi olarak çalışıyor ve birçok durumda SEO'yu arttırdığı gösterilmiştir .

* Varsayılan olarak belirtilen davranış dışında istisna yoktur.<button type="button">

Özetle, kullanımını kesinlikle tavsiye etmiyorum<input type="submit" /> .


Teşekkür ederim. Bunu, özellikle HTML5 anlamsal noktasını arıyordum. 2020'de saf işlevselliğin ötesinde düşünmek zorundayız.
pierre_loic

27

<input type='submit' />tek bir kendi kendine kapanan etiket olduğu için içindeki HTML'yi desteklemez. <button>, bir etiket çifti olduğu için içeride HTML, resim vb. destekler <button><img src='myimage.gif' /></button>. <button>CSS stili söz konusu olduğunda da daha esnektir.

Dezavantajı, <button>eski tarayıcılar tarafından tam olarak desteklenmemesidir. IE6 / 7, örneğin, doğru görüntülemiyor.

Belirli bir nedeniniz olmadıkça, muhtemelen en iyisi sadık kalmaktır <input type='submit' />.


1
Cevap 2 yıl önceydi. Ayrıca, alternatif düğme metni belirtmek çok mümkün:<input type="submit" value="Log In" />
Jared Ng

2
@nailer Fikrinize mükemmel bir şekilde hak kazandınız, ancak herhangi bir cevap kaçınılmaz olarak mevcut teknolojinin durumuna atıfta bulunacaktır. Belki HTML 6 <button>yeni bir şey lehine kullanımdan kaldırılacaktır . Çünkü biz hiç cevaplar belirli bir etiketi söz gerektiğini ortalama mu olabilir gelecekte bir noktada değiştirebilir? Yanıtların durumlarına nasıl uygulanacağını belirlemek için bunu okuyucuya bir alıştırma olarak bırakmayı tercih ederim. Bilgiler okuyucu için değerli olduğu sürece, dahil etme problemini görmüyorum.
Jared Ng

1
Cevabın yazıldığı sırada IE6 / 7 zaten güncel değildi. Destek argümanlarınızı kontrol etmeden ve artık uygulamadıklarını fark etmeden yayınınızı okuyan yeni bir web geliştiricisi, 'düğme' öğelerini kullanmamak için iyi bir neden olduğunu düşünür.
mikemaccana

2
@ nailer Herkesin yapıştığı evrensel bir "güncel olmayan" tarayıcı listesi yoktur. Farklı işyerlerinin desteklenen tarayıcılar için farklı gereksinimleri vardır. 2011'deki "desteklenen tarayıcılar" standardınızın IE6 / 7 içermemesi, her yerde böyle olduğu anlamına gelmez.
Jared Ng

1
Evrensel bir "güncel olmayan" tarayıcı listesi olmadığının farkındayım - dolayısıyla her biri böyle bir şeyden bahsetmiyor. Söylediğim tek şey, bu "IE6 / 7 ekran düğmesini doğru bir şekilde desteklemiyor." Bu, StackOverflow'un IE6 geçici çözümlerinde sonsuza kadar duraklatılmasını durdurur.
mikemaccana

14

Bunun eski bir soru olduğunun farkındayım ama bunu mozilla.org'da buldum ve geçerli olduğunu düşünüyorum.

Bir düğme üç tipte olabilir: gönderme, sıfırlama veya düğme. Gönder düğmesine tıklamak formun verilerini öğenin action özelliği tarafından tanımlanan web sayfasına gönderir.

Sıfırlama düğmesine tıklandığında tüm form widget'ları hemen varsayılan değerlerine sıfırlanır. UX bakış açısından, bu kötü uygulama olarak kabul edilir.

Bir düğme düğmesine tıklamak ... hiçbir şey yapmaz! Bu aptalca geliyor, ancak JavaScript ile özel düğmeler oluşturmak inanılmaz derecede faydalı.

https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms/My_first_HTML_form#And_a_<button>_to_finish


Hiçbir şey yapmazsa nasıl faydalıdır?
Tatlım

4
Çünkü daha sonra Javascript aracılığıyla tıklama etkinliğine işleyicileri bağlayabilirsiniz
fonso

@Honey örneğin <button type="button">bir kaydırıcıyı / karuseli bir sonraki slayda ilerletmek için a kodlayabilirsiniz .
chharvey

11

<button>daha yeni <input type="submit">, daha semantik, stilize edilmesi ve içindeki HTML'yi desteklemesi kolay.


8

Diğer cevaplar büyük ve soruya cevap ederken kullanırken dikkat edilmesi bir şey var input type="submit"ve button. Bir ile input type="submit"siz kullanamazsınız girişi bir CSS sözde elemanı ancak can bir düğme için!

buttonBiçimlendirme söz konusu olduğunda, bir öğeyi girdi üzerinde kullanmak için bir nedendir .


3

Bu bir hata veya özellik olup olmadığını bilmiyorum, ama çok önemli (en azından bazı durumlarda) fark buldum: <input type="submit">isteğinizde anahtar / değer çifti oluşturur ve <button type="submit">yapmaz. Chrome ve Safari'de test edildi.

Dolayısıyla, formunuzda birden fazla gönderme düğmeniz varsa ve hangisinin tıklandığını bilmek istiyorsanız - kullanmayın button, input type="submit"bunun yerine kullanın.


benim expirience gelen kesinlikle başka bir yol, düğme $ _POST ["send_name"] geçer ve girdi DEĞİLDİR. krom üzerinde test edilmiştir. Firefox her zaman $ _POST ["gönder_adı"] gönderir.
Gall Annonim

@GallAnnonim belki de bu belge türüne bağlıdır. Çünkü kesinlikle girdi türü = gönder kullanıyorum ve krom üzerinde çalışıyor
Ivan Yarych

ilginç ... <! DOCTYPE html> lang "pl" && kodlama utf-8 kullanarak herhangi bir fark yaparsa kullandım. krom 58.0.3029.96 olduğunu
Safra Annonim

-2

Eğer bahsediyorsanız <input type=button>, formu otomatik olarak göndermez

<button>etiket hakkında konuşuyorsanız , bu daha yenidir ve tüm tarayıcılarda otomatik olarak gönderilmez.

Sonuç olarak, formun tüm tarayıcılarda tıklandığında gönderilmesini istiyorsanız, <input type="submit">


14
<button type="submit">Formları otomatik olarak göndermek için kullanabilirsiniz .
jumpnett
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.