我正在以 HTML 格式显示我的数据库中的数据,以便用户可以对其进行编辑。
<input type="text" id="name" placeholder="Name" required = " true" value = <?php if(isset($_SESSION['name'])) echo $_SESSION['name'] ;?>>
我不得不使用 session 存储是有原因的。这里的问题是,当我刷新页面时,它显示存储在 session 中的旧值。有没有办法在加载时明确清除表单?我尝试了 JavaScript 和 jQuery reset(),但它不起作用,因为它不是可以清除的用户输入。
编辑。这不是处理自动完成的情况,更准确地说,我有另一种形式来读取我用来从数据库查询的唯一 ID。数据库结果存储在 session 存储中,我将它们回显到第二种形式。
最佳答案
reset
只会将元素恢复到标记指示的状态,这无济于事。
相反,您需要将元素的 defaultValue
设置为新的默认值,然后使用 reset
(或者只是分配给 value
同时)。 defaultValue
是反射(reflect) value
属性的属性。
例子:
setTimeout(function() {
console.log("Clearing defaultValue and resetting...");
$("#the-form input").prop("defaultValue", "");
$("#the-form")[0].reset();
}, 800);
<form id="the-form">
<input type="text" id="name" placeholder="Name" required = " true" value = "value from markup">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
要确定您是否需要这样做,您可以将 PHP session ID 保存在客户端 sessionStorage
中(沿着 Louys Patrice Bessette's suggestion 行),并且仅在它们匹配时才执行此操作。沿着这些线加载:
var phpSessionId = <?php echo json_encode(session_id())?>;
if (sessionStorage.getItem("phpsessionid") != phpSessionId) {
sessionStorage.setItem("phpsessionid", phpSessionId);
} else {
// reset the fields -- perhaps even to values you stored in `sessionStorage`
}
关于javascript - 明确清除表单字段,即使已给出值 ="",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50785640/