javascript - 提交时将表单数据发送到 Javascript

标签 javascript jquery html forms

好吧,我觉得这应该很简单;所以要么我完全错过了这里和我读过的其他网站上的问题的要点,要么没有在相同的上下文中被问到......

我有一个非常简单的表单元素(如下)

<form>
  <input type="text" id="searchTerm" />
  <input type="submit" value="Submit" id="submitButton" />
</form>

基本上我想做的是,当单击 Submit 按钮时,将输入到 text 框中的值传递给 JavaScript 函数 和控制台记录(现在)。

这看起来已被问过一百万次,但我读过的问题并没有回答我的问题(我不认为)。

编辑 感谢您的所有回复;最大的问题是我试图引用在表单元素之后调用的外部 Javascript 文件中的函数。

最佳答案

没有必要在提交表单处理函数中添加另一个 getElementById()。我对为什么这种方法如此普遍感到困惑。如果您需要获取表单的数十个/所有值,您会怎么做?写几十个元素选择器?

我认为下面的更简洁:

输入可以包含一个 name 属性来简化它们的访问:

  function submitForm(event) {
    alert(event.target.elements.searchTerm.value)
    return false;
  }
<form onsubmit="submitForm(event)">
  <input name="searchTerm"/>
  <button>Submit</button>
</form>

更好,

function submitForm(that) {
  alert(that.searchTerm.value)
  return false;
}
<form onsubmit="submitForm(this)">
  <input name="searchTerm"/>
  <button>Submit</button>
</form>

在处理程序本身中,您甚至可以直接访问值:

<form onsubmit="alert(searchTerm); false">
  <input name="searchTerm"/>
  <button>Submit</button>
</form>

尽管我不知道为什么最新的示例有效;尚未找到与此相关的任何文档;我开了一个问题here .

如果你通过JS注册事件处理器,this(在非lambda函数中)已经指向了表单元素,所以你也可以这样做

document.querySelector('#myForm').addEventListener('submit', function() {
  event.preventDefault()
  alert(this.elements.searchTerm.value)
});
<form id="myForm">
  <input name="searchTerm"/>
  <button>Submit</button>
</form>

如果您想从 HTML 表单中获取键/值映射(普通)对象,请参阅 this answer .

关于javascript - 提交时将表单数据发送到 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37487826/

相关文章:

javascript - 将原型(prototype)分配给Object.create原型(prototype)有什么区别

javascript - 创建浏览器退出弹出窗口

jQuery-:focus Triggering When Switching Windows/Tabs

jquery - 当窗口变小时,垂直导航栏变为水平导航栏,边距问题

javascript - 如何关闭我编写的这个 jQuery 模式?

javascript - 以 Angular 结构页面的正确方法

javascript - 保护页面的最简单的安全形式

javascript - 动态添加一个值 will-change on click/hover jQuery

html - 数据源和在没有 Javascript 的 HTML5 中显示图像?

jQuery fadeIn fadeOut 并不总是以相同的方式工作