標籤:

input type="submit" 和"button"有什麼區別?


謝謝邀請。

在一個頁面上畫一個按鈕,有四種辦法:

  • & 這就是一個按鈕。如果你不寫javascript 的話,按下去什麼也不會發生。

  • & 這樣的按鈕用戶點擊之後會自動提交 form,除非你寫了javascript 阻止它。

  • & 這個按鈕放在 form 中也會點擊自動提交,比前兩個的優點是按鈕的內容不光可以有文字,還可以有圖片等多媒體內容。(當然,前兩個用圖片背景也可以做到)。它的缺點是不同的瀏覽器得到的 value 值不同;可能還有其他的瀏覽器兼容問題(葛亮)。
  • 其他標籤,例如 a, img, span, div,然後用圖片把它偽裝成一個按鈕。

參見:

[原]&和& 的區別

html - Difference between & and &

html - input type="submit" Vs button tag are they interchangeable?


畫面表現上,其他回答都已經說明了。

需要強調的一點是,其實&不是一個畫面元素,而是一個表單(Form)元素,和文本輸入是一樣的,都屬於「數據」的一部分(特徵是,有value屬性,而且該屬性的值,會被傳送到server端,可以拿來用),而不是樣式的一部分。這種表現和數據混淆的設計,是早期web標準還比較簡陋的時代的遺產。

從畫面表現上看,通過CSS可以把兩者描繪得完全一樣。

從畫面動作上看,通過JS可以強制兩者動作也一致(都提交或者都不提交)。

但是只有表單數據這個特性,是無法混淆的。&無法把自己當成Form的數據。

所以,如果只是個單純的按鈕,觸發一些畫面動作,請使用&;反之,會把畫面的數據提交給Server的,一般用&,當然&+JS也完全可以取代。


56贊的不太好

bt和sb各寫一個,綁個alert或者dom操作。可以發現:button如果沒別的,就會一動不動;submit如果沒別的,就會刷新頁面(應該是一閃然後保持原頁面);sb綁了dom,就是js的效果一閃,然後保持原頁面。可以寫js事件來綁定button,js是客戶端的。但submit的實質作用是提交給服務端的,不是寫個js阻止就能完事。


我覺得有了js之後button也是多餘的存在


當onclick的時候給他return false


請問一個問題:

比如我為一個form裡面的&和&用js同時載入了onmousedown事件,onmousedown處理完事後不執行this.click(),

為什麼&會觸發onclick呢?有什麼方法可以避免&觸發onclick嗎?麻煩了。


推薦閱讀:

有HTML / XML這麼好的前端及UI解決方案,微軟為什麼還要繼續推WPF?
JS中event.preventDefault()取消默認事件能否還原?
這兩個js有衝突嗎?
svg 和 canvas在移動端的兼容性如何?尤其是在動畫方面。謝謝!?

TAG:HTML | HTML5 |