3 回答
TA貢獻1883條經驗 獲得超3個贊
復選框(和單選按鈕)是可以由用戶切換的開關。當設置控件元素的選中屬性時,開關為“ON”。當表單提交時,只有“on”復選框控件才能成功。
TA貢獻1818條經驗 獲得超7個贊
在HTML中,每個<input />元素與單個(但不是唯一)名稱和值對相關聯。只有在以下情況下,才會在后續請求(在本例中為POST請求主體)中發送此對<input />是“成功”。
因此,如果您在您的<form>DOM:
<input type="text" name="one" value="foo" />
<input type="text" name="two" value="bar" disabled="disabled" />
<input type="text" name="three" value="first" />
<input type="text" name="three" value="second" />
<input type="checkbox" name="four" value="baz" />
<input type="checkbox" name="five" value="baz" checked="checked" />
<input type="checkbox" name="six" value="qux" checked="checked" disabled="disabled" />
<input type="checkbox" name="" value="seven" checked="checked" />
<input type="radio" name="eight" value="corge" />
<input type="radio" name="eight" value="grault" checked="checked" />
<input type="radio" name="eight" value="garply" />
將生成這些名稱+值對,這些值對將提交給服務器:
one=foo
three=first
three=second
five=baz
eight=grault
注意:
two和six被排除在外,因為他們disabled屬性集
three發送兩次,因為它有兩個同名的有效輸入。
four沒有發送,因為它是checkbox那不是checked
six盡管checked因為disabled屬性具有更高的優先級。
seven沒有name=""屬性已發送,因此未提交。
關于您的問題:您可以看到,未選中的復選框因此不會將其名稱+值對發送到服務器-但其他共享名稱的輸入將與其一起發送。
像ASP.NETMVC這樣的框架通過(偷偷地)將每一個checkbox輸入hidden在呈現的HTML中輸入,如下所示:
@Html.CheckBoxFor( m => m.SomeBooleanProperty )
呈現:
<input type="checkbox" name="SomeBooleanProperty" value="true" />
<input type="hidden" name="SomeBooleanProperty" value="false" />
如果用戶不選中復選框,則將向服務器發送以下內容:
SomeBooleanProperty=false
如果用戶選中了復選框,則這兩個復選框都將被發送:
SomeBooleanProperty=true
SomeBooleanProperty=false
但是服務器將忽略=false版本,因為它看到=true版本,所以如果它沒有看到=true它可以確定是否呈現了復選框,并且用戶沒有選中它-與SomeBooleanProperty根本不提供輸入。
TA貢獻2012條經驗 獲得超12個贊
如果滿足下列條件之一,則跳過此元素的以下子步驟:[.]
字段元素是一個輸入元素,其類型屬性處于復選框狀態,其檢查為false。
onvalue
否則,如果字段元素是類型屬性處于復選框狀態或RadioButton狀態的輸入元素,則運行以下進一步嵌套的子步驟:
如果字段元素具有指定的value屬性,則讓value是該屬性的值;否則,讓值成為字符串“on”。
- 3 回答
- 0 關注
- 487 瀏覽
相關問題推薦
添加回答
舉報
