即使值="显式清晰的表单字段"已被给予

时间:2018-06-10 16:13:07

标签: javascript php jquery html5

我在HTML表单中显示数据库中的数据,以便用户可以编辑。

<input type="text"  id="name" placeholder="Name" required = " true"  value = <?php if(isset($_SESSION['name'])) echo $_SESSION['name'] ;?>>

我必须使用会话存储是有原因的。这里的问题是,当我刷新页面时,它会显示存储在会话中的旧值。有没有办法在加载时明确清除表单?我尝试了JavaScript和jQuery reset(),它不起作用,因为它不是用户输入,可以清除。
编辑。这不是处理自动完成的情况,更确切地说,我有另一种形式来读取我用来从数据库查询的唯一ID。数据库结果存储在会话存储中,我将它们回显到第二个表单。

2 个答案:

答案 0 :(得分:1)

reset只会将元素恢复到标记所指示的状态,这不会有帮助。

相反,您需要将元素的defaultValue设置为新的默认值,然后使用reset(或者只是同时分配给value)。 defaultValue是反映value属性的属性。

示例:

&#13;
&#13;
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;
&#13;
&#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(); ?>