BUTTON和INPUT的區(qū)別

2018-08-22 19:01 更新

一、定義和用法

<button> 標(biāo)簽定義的是一個(gè)按鈕。

在 button 元素內(nèi)部,可以放置文本或圖像。這是<button>與使用 input 元素創(chuàng)建的按鈕的不同之處。

二者相比較, <button> 控件提供了更為強(qiáng)大的功能和更豐富的內(nèi)容。<button> 與 </button> 標(biāo)簽之間的所有內(nèi)容都是按鈕的內(nèi)容,其中包括任何可接受的正文內(nèi)容,比如文本或多媒體內(nèi)容。例如,我們可以在按鈕中包括一個(gè)圖像和相關(guān)的文本,用它們?cè)诎粹o中創(chuàng)建一個(gè)吸引人的標(biāo)記圖像。

唯一禁止使用的元素是圖像映射,因?yàn)樗鼘?duì)鼠標(biāo)和鍵盤敏感的動(dòng)作會(huì)干擾表單按鈕的行為。

請(qǐng)始終為按鈕規(guī)定 type 屬性。Internet Explorer 的默認(rèn)類型是 "button",而其他瀏覽器中(包括 W3C 規(guī)范)的默認(rèn)值是 "submit"。


二、瀏覽器支持

所有主流瀏覽器都支持 <button> 標(biāo)簽。

重要事項(xiàng):如果在 HTML 表單中使用 button 元素,不同的瀏覽器會(huì)提交不同的值。Internet Explorer 將提交 <button> 與 <button/> 之間的文本,而其他瀏覽器將提交 value 屬性的內(nèi)容。請(qǐng)?jiān)?nbsp;HTML 表單中使用input元素來創(chuàng)建按鈕。


三、注意事項(xiàng)

在使用<button>標(biāo)簽時(shí)很容易想當(dāng)然的當(dāng)成 <input type="button">使用,這很容易產(chǎn)生以下幾點(diǎn)錯(cuò)誤用法:

 1、通過$('#customBtn').val()獲取<button id="customBtn" value="test">按鈕</button> value的值

     在IE(IE內(nèi)核)下這樣用到得的是值是“按鈕”,而不是“test”,非IE下得到的是“test”。 參加上面標(biāo)紅的第一句話。

  這一點(diǎn)要和<input type="button">區(qū)分開。                         

     通過這兩種方式$('#customBtn').val(),$('#customBtn').attr('value')在不同瀏覽器的獲得值,如下: 

Browser/Value

$('#customBtn').val()

$('#customBtn').attr('value')

Firefox13.0

test

test

Chrome15.0

test

test

Opera11.61

test

test

Safari5.1.4

test

test

IE9.0

按鈕

按鈕

 驗(yàn)證這一點(diǎn)可以在測(cè)試下面的代碼 

 

Java代碼 
  1. <html>  
  2.  <head>  
  3.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  4.   <script type="text/javascript" src="jquery-1.4.4.min.js"></script>  
  5.   <script type="text/javascript">  
  6.     $(function() {  
  7.         $('#test1').click(function() {  
  8.             alert($('#customBtn').attr('value'));      
  9.         });  
  10.         $('#test2').click(function() {  
  11.             alert($('#customBtn').val());      
  12.         });  
  13.     });  
  14.   </script>  
  15.  </head>  
  16.  <body>  
  17.     <button id="customBtn" value="test">&#x6309;&#x94AE;</button>   
  18.     <input type="button" id="test1" value="get attr"/>  
  19.     <input type="button" id="test2" value="get val"/>  
  20.  </body>  
  21. </html>  

 2、無意中把<button>標(biāo)簽放到了<form>標(biāo)簽中,你會(huì)發(fā)現(xiàn)點(diǎn)擊這個(gè)button變成了提交,相當(dāng)于<input type="submit"/>

 

    這一點(diǎn)參見上面第二句標(biāo)紅的話就明白什么意思了。

    不要把<button>標(biāo)簽當(dāng)成<form>中的input元素。

    驗(yàn)證這一點(diǎn)可以在測(cè)試下面的代碼 

 

Java代碼 
  1. <html>  
  2. <body>  
  3.     <form action="">  
  4.         <button> button </button>  
  5.         <input type="submit" value="input submit"/>  
  6.         <input type="button" value="input button"/>  
  7.     </form>  
  8. </body>  
  9. </html>  

一句話概括主題:<button>具有<input type="button" ... >相同的作用但是在可操控性方面更加強(qiáng)大。 


HTML 4.01規(guī)范的Forms部分指 名表單有以下幾種控制類型:buttons, checkboxes, radio buttons, menus, text input, file select, hidden controls, object controls. 其中除了buttons/menus/object controls之外,都是由<input>完成。 


我這里說的是<button>和<input>。 


<button>和<input> 
規(guī)范中指名:可以用<button>和<input>來做表單按扭。不同的按鈕類型請(qǐng)參考這些元素的詳細(xì)定義。要注意的是<button>比<input>支持更豐富的表現(xiàn)功能。 


一些區(qū)別 
大家都知道<input>可以這樣用(實(shí)際上是一定要這樣用):<input type="submit" value="OK" />,一定要這樣閉合。而不是:<input type="submit" value="OK" ></input>。因?yàn)槠鹗紭?biāo)簽為必須,而關(guān)閉標(biāo)簽是禁止的。 


<button>比<input>更厲害的地方就在于它可以包含內(nèi)容。它的值并不是寫在value屬性里,而是包含在標(biāo)簽中。如:<button>OK</button>。<button>的起始標(biāo)簽和關(guān)閉標(biāo)簽都是必須的。這樣你便獲得了樣式化的主導(dǎo)權(quán)。 


你可以這樣寫:<button><strong>OK</strong>, I do.</button>,甚至是插入圖片:<button><img src="button.gif" alt="" />, it's great.</button>。有點(diǎn)類似于<input type="image">,但是顯然強(qiáng)大多了。 


最后要注意的是,被<button>包含的圖片,不能使用熱點(diǎn)地圖,即不能<img src="foo.gif" usemap="..." />,這是不合法的。當(dāng)然也不能再包含諸如input, select, textarea, label, button, form, fieldset, iframe,和isindex(不推薦使用)元素了。 


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)