簡體   English   中英

如何從殘疾人那里獲取表單值<input>元素

[英]How can I get the form value from a disabled <input> element

forms 的 HTML 標准似乎使得禁用的輸入元素對表單名稱/值集合沒有貢獻。

有什么辦法可以解決這個問題嗎? 我需要能夠打開和關閉禁用,但仍然返回提交表單時的任何值。

我意識到我可以在提交表單之前使用 JavaScript 將值復制到隱藏輸入,但我不希望這樣做。 有沒有更清潔的方法?

我正在使用 ASP.NET,沒關系。

您應該使用readOnly標志而不是disabled 只讀字段不能由用戶編輯,但仍與表單一起提交。

<input type="text" value="blah" readonly="true"/>

表單的 HTML 標准似乎是這樣的,禁用的輸入元素不會對表單名稱/值集合做出貢獻。

那是正確的。

HACK:您可以在提交時使用 Javascript:

  1. 取消設置已禁用
  2. 設置為只讀
  3. 提交!

如果您將該值設為 readonly ,而不是禁用它,該字段的名稱/值將與其余非禁用字段一起發送。

使只讀字段的焦點事件處理程序將焦點傳遞給下一個符合條件的字段,使其更像一個禁用元素。 一些瀏覽器允許您聚焦並選擇只讀字段,有些甚至允許您粘貼到只讀字段中,盡管它們會恢復為 onblur 和 onchange 的原始值。

<input type="text" value="" readonly="readonly">

作為 Wayne hack 的一個稍微更健壯的變體(可能會被后退按鈕按下),禁用控件時:設置readonly= trueclassName= 'disabled'而不是disabled= true ,然后樣式.disabled看起來類似於一個殘疾人領域。

我創建了一個快速(僅限 Jquery)插件,在禁用輸入時將值保存在數據字段中。 這只是意味着只要使用 .prop() 或 .attr() 通過 jquery 以編程方式禁用該字段...然后通過 .val()、.serialize() 或 .serializeArra() 訪問該值將始終返回即使禁用也有價值:)

https://github.com/Jezternz/jq-disabled-inputs

您可以輕松地

  1. 將狀態更改為正常(禁用=假)
  2. 讀取值
  3. 將輸入狀態重置為禁用

    $(element).prop("disabled", false); var text = $(element).val(); $(element).prop("disabled", true)

一個小變種,設置readonly標志,然后使用 css 將此添加到輸入元素

.read_only_input {
background: #efefef; /* to look like disabled */
pointer-events: none; /* to avoid focus on input */

}

它的簡單只有兩步

  1. 檢查您要訪問的輸入是否被禁用,然后刪除其“禁用”屬性

  2. 獲取該值,然后再次添加禁用屬性。

我想這是一個黑客,但似乎對我來說效果很好。 兩者都做! 用戶看到禁用的輸入、清晰的幻影和瀏覽器阻止交互 - 但它沒有與表單一起提交。 用戶看不到潛在的令人迷惑的只讀字段,但它與表單一起提交。

<input name="mode_d" size="8" value="mode" disabled>
<input name="mode"            value="mode" hidden readonly>

您可以使用Visible=false和/或ReadOnly=true而不是Enabled=false嗎?

如果您正在使用控件,您真的不應該設置Enabled=false嗎?

而不是將字段設置為禁用將只讀屬性設置為“只讀”,如下所示。

readonly=readonly

這將在表單提交中發送您的字段值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM