javascript - 明确清除表单字段,即使已给出值 =""

标签 javascript php jquery html

我正在以 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/

相关文章:

javascript - 使用javascript在系统本地存储json数据?

Javascript/Jquery 不会更改 Safari 中的 URL 参数,但会在 Chrome 中更改

php - 找不到类 PHP

php - 套接字服务器 + 事件源魔术断开

javascript - 将键盘绑定(bind)到左/右导航

javascript - 如何使用jQuery按字符串选择文档

javascript - Safari:类型错误:代理的 'target' 应该是一个对象

javascript - Node.js,等待所有 Redis 查询完成后再继续执行

php - 用JS提交表单

javascript - 加载下一页并等待点击