我有一个输入字段:
<input cid="Topic_Created" name="Topic.Created" size="25" type="text" value="6/5/2011 8:22:45 AM" />
我希望该字段显示在我的表单上,但不希望用户能够编辑该字段。当用户单击提交时,我希望将表单值发送回服务器。
这可能吗?我尝试了disabled = "disabled"
,readonly = "readonly"
的不同组合。似乎我总是得不到为该领域发回的任何东西。
答案 0 :(得分:48)
添加具有相同名称的隐藏字段将在提交表单时发送数据。
<input type="hidden" name="my_name" value="blablabla" />
<input type="text" name="my_name" value="blablabla" disabled="disabled" />
答案 1 :(得分:4)
假设你使用脚本来创建表单,我建议使用<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);
}
}
答案 2 :(得分:3)
或者您可以使用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>
答案 3 :(得分:3)
使用Windows 10上的Chrome浏览器只需输入名称=&#34; your_name&#34; readonly属性工作正常:客户端无法更改值,但会将其发送到服务器。
答案 4 :(得分:2)
<script type="text/javascript">
function myFn(event) {
event.stopPropagation(); event.preventDefault();
}
</script>
<input onkeydown="myFn(event)" >
答案 5 :(得分:1)
提交只读字段时,应考虑使用输入 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" />
答案 6 :(得分:1)
您可以在输入元素中添加'readonly'='true'。用户无法使用此功能进行编辑,也无法将值发送回服务器。
<input cid="Topic_Created" name="Topic.Created" size="25" type="text" value="6/5/2011 8:22:45 AM" readonly='true' />