<İnput type = 'submit' /> ve <button type = 'submit'> metin </button> arasındaki fark


149

Onlar hakkında birçok efsane var. Doğruyu bilmek istiyorum. Aşağıdaki iki örnek arasındaki farklar nelerdir?

  1. <input type='submit' value='text' />

  2. <button type='submit'>text</button>


29
Şunu musunuz <input type="submit">ve <button type="submit">?
kennytm


1
inputboş bir unsurdur. Kullanmayın <input />, sadece kullanın <input>.
CDT

HakanFıstık @, örneğin, bir (az ya da çok kurnazca) farklı bir orada bunun bir dup, değil o type=submitiçin buttonbile bir endişe orada (o std bile parçası değildi olasılıkla çünkü. O zamanlar (AFAIK), diğer soru sorulduğunda).
Sz.

Yanıtlar:


122

Efsanelerinizi nereden aldığınızdan emin değilim ama:

Düğmeyi şununla gönder: <button>

Olduğu gibi:

<button type="submit">(html content)</button>

IE6, bu düğme için tüm metni etiketler arasında gönderecek, diğer tarayıcılar yalnızca değeri gönderecektir. Kullanımı <button>, size düğme tasarımına göre daha fazla düzen özgürlüğü sağlar. Tüm amaç ve amaçlarıyla ilk başta mükemmel görünüyordu, ancak çeşitli tarayıcı tuhaflıkları bazen kullanımını zorlaştırıyor.

Örneğinizde, IE6 textsunucuya gönderir , diğer tarayıcıların çoğu hiçbir şey göndermez. Tarayıcılar arası uyumlu hale getirmek için kullanın <button type="submit" value="text">text</button>. Daha da iyisi: değeri kullanmayın, çünkü HTML eklerseniz, sunucu tarafında ne alındığı oldukça karmaşık hale gelir. Bunun yerine, fazladan bir değer göndermeniz gerekiyorsa, gizli bir alan kullanın.

İle düğme <input>

Olduğu gibi:

<input type="button" />

Varsayılan olarak, bu hiçbir şeyin yanında değildir. Formunuzu bile göndermeyecek. Yalnızca düğmeye metin yerleştirebilir ve CSS aracılığıyla ona bir boyut ve kenarlık verebilirsiniz. Orijinal (ve mevcut) amacı, formu sunucuya göndermeye gerek kalmadan bir komut dosyası yürütmekti.

Normal gönder düğmesi <input>

Olduğu gibi:

<input type="submit" />

İlki gibi, ama aslında çevreleyen formu sunar.

İle resim gönderme düğmesi <input>

Olduğu gibi:

<input type="image" />

Birincisi (gönder) gibi, aynı zamanda bir form da gönderecek, ancak herhangi bir resmi kullanabilirsiniz. Bu, bir formun gönderilmesi gerektiğinde resimleri düğme olarak kullanmanın tercih edilen yoluydu. Daha fazla kontrol <button>için artık kullanılmaktadır. Bu, sunucu tarafı görüntü haritaları için de kullanılabilir, ancak bu günlerde nadirdir. Eğer kullandığınız zaman usemap-attribute ve (veya bu özelliğe olmadan), tarayıcı sunucuya fare işaretçisi X / Y koordinatları gönderir (daha doğrusu anın düğmenin içinde fare işaretçisi konumu bunu tıklayın). Bu ekstraları görmezden gelirseniz, resim olarak gizlenmiş bir gönder düğmesinden başka bir şey değildir.

Tarayıcılar arasında bazı ince farklılıklar vardır, ancak <button>yukarıda açıklanan etiketi dışında tümü değer-özelliğini gönderecektir .


1
Yine de düzenleme yaptığınız için, IE6 ile ilgili nokta, tuhaflıklar modunda IE11 ile hala geçerlidir. (Yine tuhaflık modunu kullanmamak için başka bir neden). Yine de Edge'de düzeltildi. Oh, ve <input> ile <button> arasında daha fazla fark var: <input> white-space:prevarsayılan olarak vardır, <button> yoktur. Bu, bir düğmeyi görüntü alanından daha geniş yapmaya çalışırken belirgin hale gelir.
Mr Lister

19

İle <button>, metnin olduğu yerde img etiketleri vb.

<button type='submit'> text -- can be img etc.  </button>

ile <input>türüne, metne sınırlıdır


ile <input type="image" />metne sınırlı değildir ve aynı zamanda gerçekleştiren bir gönderin.
Abel

2
@Abel: Bu, sırayla fare işaretçisinin konumunu name.xve name.yparametrelerini gönderen bir görüntü haritası oluşturmaktan daha fazlasıdır ( nameparametrenin mevcut olmadığını unutmayın !). <input type="submit">Tek amaç arka plan resmi olan bir düğmeye sahip olmaksa, CSS arka plan ile kullanmayı tercih ederim .
BalusC

@BalusC: Doğru, ancak bunun amacı, HTML 2.0 standardını yazarken, CSS olmadığında, açıklandığı gibi, bir görüntüyü düğme veya sunucu tarafı görüntü eşlemesi olarak kullanmaktı. Ama aslında, aynısını CSS ve HTML ile yapmak için arka plan resmine sahip normal bir buton (ab) kullanabilirsiniz.
Abel

@Abel: Niyeti asla bu olmadı input type="image". Bunun için <button type="submit">amaçlanmıştır.
BalusC

1
@BalusC: Belki standardı farklı anlıyoruz, ancak bu Lee'nin HTML 2.0 standardı için orijinal metninde: " TYPE=IMAGE' implies TYPE = SUBMIT 'processing; yani, bir piksel seçildiğinde, form bir bütün olarak gönderilir." . Gerçek niyet olduğunu düşündüğünüz şeyi yapın :)
Abel

2

Özetle :

<input type="submit">

<button type="submit"> Submit </button>

Her ikisi de varsayılan olarak görsel olarak aynı eylemi gerçekleştiren bir düğme çizer (formu gönderin).

Ancak, <button type="submit">daha iyi anlambilim, daha iyi ARIA desteği ve biçimlendirmesi daha kolay olduğu için kullanılması tavsiye edilir .

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.