我在HTML表单中显示数据库中的数据,以便用户可以编辑。
<input type="text" id="name" placeholder="Name" required = " true" value = <?php if(isset($_SESSION['name'])) echo $_SESSION['name'] ;?>>
我必须使用会话存储是有原因的。这里的问题是,当我刷新页面时,它会显示存储在会话中的旧值。有没有办法在加载时明确清除表单?我尝试了JavaScript和jQuery reset(),它不起作用,因为它不是用户输入,可以清除。
编辑。这不是处理自动完成的情况,更确切地说,我有另一种形式来读取我用来从数据库查询的唯一ID。数据库结果存储在会话存储中,我将它们回显到第二个表单。
答案 0 :(得分:1)
reset
只会将元素恢复到标记所指示的状态,这不会有帮助。
相反,您需要将元素的defaultValue
设置为新的默认值,然后使用reset
(或者只是同时分配给value
)。 defaultValue
是反映value
属性的属性。
示例:
setTimeout(function() {
console.log("Clearing defaultValue and resetting...");
$("#the-form input").prop("defaultValue", "");
$("#the-form")[0].reset();
}, 800);
&#13;
<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>
&#13;
要确定是否需要这样做,您可以将PHP会话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`
}
答案 1 :(得分:1)
解决方案结果非常简单。在点击功能的jQuery中显示后,我销毁了会话。
<?php session_destroy(); ?>