2011-06-05 34 views
17

我有一個輸入字段:如何使輸入字段只讀,但仍然有數據發送回表單?

<input cid="Topic_Created" name="Topic.Created" size="25" type="text" value="6/5/2011 8:22:45 AM" /> 

我希望字段顯示我的形式,但不希望用戶能夠編輯的字段。當用戶點擊提交時,我希望表單值被髮送回服務器。

這是可能的。我嘗試了disabled = "disabled",readonly = "readonly"的不同組合。似乎我總是得不到任何回報的領域。

回答

41

添加具有相同的名稱將隱藏字段發送當表單提交的數據。

<input type="hidden" name="my_name" value="blablabla" /> 
<input type="text" name="my_name" value="blablabla" disabled="disabled" /> 
+0

謝謝。這很好。救了我...... :-) – UCC 2011-06-05 09:12:18

+4

這根本不起作用。如果禁用,則不會使用表單提交。相反,您將需要使用只讀。 – Donato 2014-10-16 19:33:27

+3

@DanStayntouch禁用的字段不會發送隱藏的數據。 – Petah 2014-10-17 00:13:48

0

在提交只讀字段時,您應該考慮使用輸入type =「hidden」。否則,如果您仍然需要輸入字段的值可見,則應該使用不同的名稱創建另一個輸入(type = text)。

<input cid="Topic_Created" name="Topic.Created" type="hidden" value="6/5/2011 8:22:45 AM" /> 
<!--This is visible: --> 
<input cid="Topic_Created" name="doesntmatter" size="25" type="text" value="6/5/2011 8:22:45 AM" /> 
3

在假設你使用一個腳本來創建表格,我建議使用<input type="hidden" />將提交變量與形式,但也可以使用常規的<input type="text" readonly="readonly" />顯示變量給用戶。這顯然不會提交數值,但使其可見(而hidden輸入將提交的值,但不是顯示的值)。

你也可以用JavaScript做到這一點:

var theForm = document.getElementsByTagName('form')[0]; 
var inputs = document.getElementsByTagName('input'); 

for (i=0; i<inputs.length; i++){ 
    if(inputs[i].type == 'hidden'){ 
     var newInput = document.createElement('input'); 
     newInput.type = 'text'; 
     newInput.setAttribute('disabled'); 
     newInput.value = inputs[i].value; 
     theForm.appendChild(newInput); 
    } 
} 

Clumsy JS Fiddle demo

1

或者ü可以使用JavaScript一點操縱,表單提交之前

<form action="target.php" method="post"> 
<input type="text" id="anu" name="anu" value="data anu" disabled="disabled" /> 
<button onclick="document.getElementById('anu').disabled=''">send</button> 
1

隨着Chrome瀏覽器在Windows 10只是一個具有名稱=「your_name」和只讀屬性工作正常移除已停用的屬性:客戶端不能更改一個值,但它被髮送到服務器。

相關問題