如何禁用输入字段而不影响PHP表单中字段的值?

时间:2012-03-09 11:33:48

标签: php html

我正在创建一个演示页面,其中必须禁用某些设置字段。我已经尝试禁用输入,其值保持不变,只是显示为灰色。我使用disabled =“true”禁用了输入。提交表单时,尽管之前存在,该值仍会消失。如何在同时禁用所述字段的同时防止值消失?

6 个答案:

答案 0 :(得分:5)

如果要显示和不更改值,可以使用readonly

<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

答案 1 :(得分:4)

在任何情况下都不会提交

disabled表单字段。

避免此问题的最常见方法是让他们readonly并添加input[readonly] { ... } css规则,使文字变为灰色,就像在禁用字段中一样。

您可能还想使用一些JavaScript来防止它被聚焦;如果你有jQuery可能看起来像这样:

$('input[readonly]').live('focus', function(e) {
    $(this).blur();
});

答案 2 :(得分:1)

使用readonly属性而不是禁用

另一种方法是在PHP会话中存储值并将它们保存在服务器上。

答案 3 :(得分:0)

您还可以使用具有正确值的同名隐藏字段并保留已禁用的字段。虽然不能完全信任隐藏/只读字段中的数据,因为它们仍然可以更改(通过Web开发工具或类似工具)

答案 4 :(得分:0)

在这里提出建议。
您可以使用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();" />

答案 5 :(得分:0)

对于输入type =“ file”,请确保执行以下操作:

<style>
input[type=file][readonly] {
    pointer-events: none;
}
</style>

<script>
    $('input[type="file"]').prop('readonly', true);
</script>