根據W3C的規則未選中的checkbox和禁用的控件不是有效控件,不會被POST。因此如果要未選中的checkbox表示值0的話,就不得不曲線完成了。 最近研究Zend Framework時候,發現其中的一個方法formCheckbox()。這個方法是生成checkbox表單的。但是它在生成checkbox的之前會生成一個hidden表單。這種做法很巧妙。 比如: <input type="hidden" name="foo" value="0"> <input type="checkbox" name="foo" id="foo" value="1"> 生成這樣的表單,當checkbox未選中的時候,提交的是hidden表單。值0就被提交到服務器了。 當checkbox都選中的時候,hidden和checkbox表單都被提交了,但是因為它們的name是一樣的,所以hidden的值被checkbox覆蓋了。所以就得到了數值1。 這種方法簡單巧妙,值得推廣。 經測試,在PHP中,如果有多個name相同的表單,post到服務器,后台僅取最后一個表單的值。而在ASP.NET中,會把這個多個表單的值合並成逗號分割的值。因此,這種方法用在PHP下更合適。