我正在创建一个演示页面,其中必须禁用某些设置字段。我尝试过禁用输入,值保持不变,只是变灰了。我使用disabled="true"禁用了输入。提交表单时,尽管之前存在该值,但该值会消失。如何在禁用上述字段的同时防止该值消失?
如果您希望值被显示而不被更改,您可以使用只读
<input type="text" name="xxx" value="xxx" readonly="readonly" />
如果您希望值被隐藏并提交到操作文件,您可以使用type=hidden
<input type="hidden" name="xxxx" value="xxx" />
有关HTML输入标记的更多信息,请点击此处http://www.w3schools.com/tags/tag_input.asp
disabled
表单字段在任何情况下都不会提交。
避免这个问题的最常见方法是将它们设为readonly
,并添加input[readonly] { ... }
css规则,使文本像禁用字段中的灰色。
您可能还想使用一些JavaScript来防止它被聚焦;如果你有jQuery:
$('input[readonly]').live('focus', function(e) {
$(this).blur();
});
使用只读属性而不是禁用
另一种方法是将值存储在PHP会话中,并将它们保存在服务器上。
只是在这里提出建议
您可以使用Javascript正常禁用字段,但在禁用字段之前,可以使用Javascript将该字段的值输入到隐藏字段中。
function runme() {
var newval = $('#field1').val();
$('#hiddenfield').val(newval);
$('#field1').attr('disabled', 'disabled');
}
<input id="field1" name="field1" type="text" value="this val" />
<input id="hiddenfield" name="hiddenfield" type="hidden" />
<input type="button" onclick="runme();" />
您也可以使用具有正确值的同名隐藏字段,并保留禁用的字段。尽管不信任隐藏/只读字段中的100%数据,因为它们仍然可以更改(通过web开发工具或类似工具)
对于输入类型="文件";一定要这样做:
<style>
input[type=file][readonly] {
pointer-events: none;
}
</style>
<script>
$('input[type="file"]').prop('readonly', true);
</script>