javascript - 不使用 event.preventDefault 阻止 html5 表单提交

标签 javascript html forms single-page-application

关于浏览器建议的输入

例如当用户在

中输入“John”时

<form>
<input type="text" name="firstName"/>
</form>

并提交表单,然后当他们重新访问此页面时,“John”将成为此字段的建议输入。

问题

我正在尝试利用 Chrome 中的输入字段建议,但我不希望重新加载页面。我有一个单页应用程序,它将记录表单提交并将其存储在全局状态中。

在表单元素的提交回调上使用 event.preventDefault 会阻止页面重新加载,但也会阻止记录新建议。

那么如何触发浏览器在不刷新的情况下保存用户输入?

最佳答案

您可以使用 HTML5 轻松管理自动填充行为 datalist或/和localstorage

<label for="nameList">Names</label>
<input type="text" name="name" id="nameList" list="names">
<datalist id="names">
  <option value="John">
  <option value="Mickey">
  <option value="Donald">
</datalist>

如果您想更新字段或为每个用户执行自定义数据列表,您可以使用本地存储来存储列表。这是一个例子:

<label for="nameList">Names</label>
<input type="text" name="name" id="nameList" list="names">
<datalist id="names">
</datalist>
  <button id="click">click</button>
</body>
  <script>
    var names = [];
document.addEventListener('DOMContentLoaded', function(){

  if(localStorage.getItem("names")){
    names = JSON.parse(localStorage.getItem("names"));//<-- names already stored    
  }
  var datalist = document.getElementById("names")
  var options = "";
  names.map(o=>{
    options += '<option value="'+o+'" />';//<-- build custom datalist
  })

  datalist.innerHTML = options; 

}, false);

var frm = document.getElementById("click");
frm.addEventListener("click", function(){
  names.push(document.getElementById("nameList").value);//<-- set new names
  localStorage.setItem("names",JSON.stringify(names));  

});
  </script>

关于javascript - 不使用 event.preventDefault 阻止 html5 表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51408693/

相关文章:

javascript - 将 Jquery slider 与模态弹出窗口相结合的问题

python - 使用 Python 替换 HTML 文档中的 HTML 标记,而不修改文档的其余部分

javascript - 加载 extjs radiogroup 数据时出现问题

javascript - 在 Marionette 布局中维护一堆 Marionette ItemView

forms - spring中form标签中的modelAttribute和commandName属性之间的区别?

javascript - 使用选择选项下拉更改图像,但对于多个事件?

javascript - 无法找到代码中所需的json模块(程序运行正常并且使用了模块)

Javascript - 对象属性设置的重复

javascript - 如果我想在 React 中使用像 AOS 这样的 javascript 库,该怎么做?

php - 使用 HTML/PHP 从 SQL 数据库创建列表