如何在不影响PHP表单中字段值的情况下禁用输入字段


How to disable input field without affecting the value of the field in a PHP form?

我正在创建一个演示页面,其中必须禁用某些设置字段。我尝试过禁用输入,值保持不变,只是变灰了。我使用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>