KB-難以理解的Disabled Span行為

   1:  <html><body>
   2:  <form method="POST">
   3:      <span disabled="disabled">
   4:          <input name="x" type="text">
   5:          <input type="button" onclick="alert('Yo!');" value="Yo">
   6:      </span>
   7:      <input type="submit" value="Submit">
   8:  </form>
   9:  </body></html>

以上這段HTML Code, 看來十分平常,但卻隱藏著殺機...

注意到span上的宣告disabled=disabled了嗎? 設定disabled屬性後,span內部的Input都會變成灰色,感覺上被disable了。但是!!! input type="text"可以繼續輸入,button的onclick也會照樣被觸發。

所以一切都是幻覺,嚇不倒我??

又錯了! 雖然input可輸入,button onclick會觸發,但是Submit時,被包在disabled span中的form element都會被忽略,後端是接不到的。

這兩個矛盾的行為,讓我搞不清楚被包在disabled span中的form element究竟算不算被disabled?從HTML client的角度來說不是(因為可以操作,只是變灰),從Server的角度來說是(因為不會被submit)。

結論是,大家如果發現資料沒被Submit時,不妨檢查一下是否外層的element被disabled了,例如這篇文章(回應中有人可是耗了好幾個小時在上面呢)。

PS: 另外做了個測試,span disbled在Firefox上完全不管用,不會產生灰色效果,也不會阻擋Submit,會有跨瀏覽器的問題。

歡迎推文分享:
Published 17 April 2007 12:36 PM 由 Jeffrey
Filed under: , ,
Views: 12,605



意見

# 阿忠 said on 07 July, 2014 11:44 PM

所以被包在disabled span裡的input 的 onclick 一樣會有效摟?

# Jeffrey said on 08 July, 2014 08:14 PM

to 阿忠,依IE11/Chrome/FF的實測結果(http://jsbin.com/vuvob/1),Yes!

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<April 2007>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication