1. 程式人生 > >【轉】解析<button>和<input type="button"> 的區別

【轉】解析<button>和<input type="button"> 的區別

color input元素 nbsp IE get 目的 比較 chrome 4.4

一、定義和用法

<button> 標簽定義的是一個按鈕。

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

二者相比較, <button> 控件提供了更為強大的功能和更豐富的內容。<button> 與 </button> 標簽之間的所有內容都是按鈕的內容,其中包括任何可接受的正文內容,比如文本或多媒體內容。例如,我們可以在按鈕中包括一個圖像和相關的文本,用它們在按鈕中創建一個吸引人的標記圖像。

唯一禁止使用的元素是圖像映射,因為它對鼠標和鍵盤敏感的動作會幹擾表單按鈕的行為。

請始終為按鈕規定 type 屬性。Internet Explorer 的默認類型是 "button",而其他瀏覽器中(包括 W3C 規範)的默認值是 "submit"。

二、瀏覽器支持

所有主流瀏覽器都支持 <button> 標簽。

重要事項:如果在 HTML 表單中使用 button 元素,不同的瀏覽器會提交不同的值。Internet Explorer 將提交 <button> 與 <button/> 之間的文本,而其他瀏覽器將提交 value 屬性的內容。請在 HTML 表單中使用 input 元素來創建按鈕。

三、註意事項

在使用<button>標簽時很容易想當然的當成 <input type="button">使用,這很容易產生以下幾點錯誤用法:

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

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

  這一點要和<input type="button">區分開。

通過這兩種方式$(‘#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

按鈕

按鈕

驗證這一點可以在測試下面的代碼

<html>  
 <head>  
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  <script type="text/javascript" src="jquery-1.4.4.min.js"></script>  
  <script type="text/javascript">  
    $(function() {  
        $(#test1).click(function() {  
            alert($(#customBtn).attr(value));      
        });  
        $(#test2).click(function() {  
            alert($(#customBtn).val());      
        });  
    });  
  </script>  
 </head>  
 <body>  
    <button id="customBtn" value="test">&#x6309;&#x94AE;</button>   
    <input type="button" id="test1" value="get attr"/>  
    <input type="button" id="test2" value="get val"/>  
 </body>  
</html>  

2、無意中把<button>標簽放到了<form>標簽中,你會發現點擊這個button變成了提交,相當於<input type="submit"/>

這一點參見上面第二句標紅的話就明白什麽意思了。

不要把<button>標簽當成<form>中的input元素。

驗證這一點可以在測試下面的代碼

<html>  
<body>  
    <form action="">  
        <button> button </button>  
        <input type="submit" value="input submit"/>  
        <input type="button" value="input button"/>  
    </form>  
</body>  
</html>  

PS:最後說了這麽多,轉載的目的就是遇到了一個坑是,button按鈕在form表單的時候會當成submit提交,千萬不要再當作button用了,如果想用button就用input type=“button" 來搞。

【轉】解析<button>和<input type="button"> 的區別