You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何初始disabled的输入框提交表单后退后无法保留输入内容?

提交表单后返回,第二个输入框不保留数据的原因及解决办法

原因

浏览器的表单数据恢复机制(返回时自动填充之前输入的内容),只会处理**初始状态为可用(非disabled)**的输入框。你的field2一开始设置了disabled="disabled",浏览器加载页面时就标记它为不可用状态,哪怕后续通过JS移除了disabled并填入内容,返回时浏览器也不会恢复这个输入框的值——因为它的初始状态是禁用的,不在浏览器自动恢复的范围内。

解决办法

这里提供两种实用方案:

方案1:用readonly替代disabled作为初始状态

将field2的初始属性改为readonly,readonly状态的输入框无法编辑,但属于可用状态,浏览器会正常保留它的值。之后在field1获得焦点时移除readonly属性即可:

<script>
var field1 = document.querySelector("#field1")
var field2 = document.querySelector("#field2")

field1.addEventListener('focus', function (e) {
    field2.removeAttribute("readonly")
})
</script>
<form action="/" method="POST">
    <input id="field1" name="field1" required="" type="text" value="">
    <input readonly="readonly" id="field2" name="field2" type="text" required="" value="">
    <input id="submit" name="submit" type="submit" value="Save">
</form>

方案2:页面加载时手动恢复field2的状态与值

如果必须保留disabled初始状态,可以在页面加载时,手动检查浏览器是否已恢复field2的值(浏览器实际会将值存在DOM中,但不会显示),若有值则移除disabled属性:

<script>
var field1 = document.querySelector("#field1")
var field2 = document.querySelector("#field2")

// 页面加载后处理
window.addEventListener('load', function() {
    if (field2.value) {
        field2.removeAttribute("disabled")
    }
})

field1.addEventListener('focus', function (e) {
    field2.removeAttribute("disabled")
})
</script>
<form action="/" method="POST">
    <input id="field1" name="field1" required="" type="text" value="">
    <input disabled="disabled" id="field2" name="field2" type="text" required="" value="">
    <input id="submit" name="submit" type="submit" value="Save">
</form>

内容的提问来源于stack exchange,提问作者Sergey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:25:23