亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果選中了<inputtype=“復選框”/>,是否只發送數據?

如果選中了<inputtype=“復選框”/>,是否只發送數據?

躍然一笑 2019-07-04 16:15:15
如果選中了<inputtype=“復選框”/>,是否只發送數據?瀏覽器的標準行為是否僅在表單提交時選中復選框輸入值數據?如果沒有提供值數據,默認值是否總是“ON”?假設上述情況是正確的,那么在所有瀏覽器中,這種行為是否都是一致的?
查看完整描述

3 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

是的,標準行為是只有在選中復選框時才發送值。這通常意味著您需要有一種方法來記住您在服務器端期望的復選框,因為并不是所有的數據都來自表單。

默認值總是“on”,這在瀏覽器中應該是一致的。

這包括在W3C HTML 4推薦標準:

復選框(和單選按鈕)是可以由用戶切換的開關。當設置控件元素的選中屬性時,開關為“ON”。當表單提交時,只有“on”復選框控件才能成功。


查看完整回答
反對 回復 2019-07-04
?
qq_笑_17

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根本不提供輸入。


查看完整回答
反對 回復 2019-07-04
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

如果未選中復選框,則對表單提交時發送的數據沒有貢獻。

HTML 5段4.10.22.4構造表單數據集描述表單數據的構造方式:

如果滿足下列條件之一,則跳過此元素的以下子步驟:[.]

字段元素是一個輸入元素,其類型屬性處于復選框狀態,其檢查為false。

然后是缺省值。on如果value失蹤:

否則,如果字段元素是類型屬性處于復選框狀態或RadioButton狀態的輸入元素,則運行以下進一步嵌套的子步驟:

如果字段元素具有指定的value屬性,則讓value是該屬性的值;否則,讓值成為字符串“on”。

因此,在表單數據構造期間跳過未選中的復選框。

類似的行為在HTML 4..在所有兼容的瀏覽器中期望這種行為是合理的。


查看完整回答
反對 回復 2019-07-04
  • 3 回答
  • 0 關注
  • 487 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號