javascript - 如何从两个相同的 Web 表单中的任何一个提交?
问题描述
我在同一页面上使用了以下简单表格两次...
<form>
<div class="input-group input-group-lg mb-3 p-2 bg-warning rounded">
<input type="text" class="form-control" placeholder="My company name" aria-label="My company name" aria-describedby="basic-addon2" id="mycompany">
<div class="input-group-append">
<button class="btn btn-primary btn-lg" type="button" id="mybutton">Get started!</button>
</div>
</div>
</form>
以下 JavaScript 抓取文本输入并使用它为我们发送给用户的 URL 形成 URL 参数...
<script>
document.getElementById('mybutton').addEventListener(
"click", function(){
const inputValue = document.getElementById('mycompany').value;
window.open("https://airtable.com/myformidgoeshere?prefill_Company=" + encodeURIComponent(inputValue));
}
)
</script>
我学到了这么多。它适用于第一个表单实例 - 但不是第二个。
问题是,我如何确保任何一种小形式都能产生相同的效果?
文本输入和按钮的 id 是否需要唯一?
而且,无论哪种方式,同一个 JavaScript 函数如何处理提交的任何表单的窗口打开?
解决方案
是的,您必须使用唯一的按钮 ID 来捕获每个事件。
下面我建议另一种方法,使用 querySelctors 来遍历 DOM。
document.querySelectorAll('form') // loop each form
.forEach(form => form.querySelector('#mybutton').addEventListener('click', (e) => { //add the vent to the corresponding form button
const inputValue = form.querySelector('#mycompany').value
window.open("https://airtable.com/myformidgoeshere?prefill_Company=" + encodeURIComponent(inputValue));
}))
<form>
<div class="input-group input-group-lg mb-3 p-2 bg-warning rounded">
<input type="text" class="form-control" placeholder="My company name" aria-label="My company name" aria-describedby="basic-addon2" id="mycompany">
<div class="input-group-append">
<button class="btn btn-primary btn-lg" type="button" id="mybutton">Get started!</button>
</div>
</div>
</form>
<form>
<div class="input-group input-group-lg mb-3 p-2 bg-warning rounded">
<input type="text" class="form-control" placeholder="My company name" aria-label="My company name" aria-describedby="basic-addon2" id="mycompany">
<div class="input-group-append">
<button class="btn btn-primary btn-lg" type="button" id="mybutton">Get started!</button>
</div>
</div>
</form>
推荐阅读
- css - CSS固定对齐?
- python - 在 FTP 文件上写入而不覆盖以前的文本 ftplib python
- java - Cassandra 和 thrift 协议中的“显示版本”
- c# - 转换器定义的 WPF MediaElement 源抛出 NullException
- php - 奇怪的问题:PHP 今年返回错误的复活节日期
- ghost-blog - 如何在 .env 文件中为 Ghost 指定数组?
- javascript - 子组件的 EventEmitter “失去”父组件的观察者
- ruby-on-rails - 具有参数、锚点和类的相同页面 link_to 语法
- microsoft-graph-api - 使用 MS Graph Explorer 将自适应卡片发送到通道 - 我可以删除顶部的填充吗?
- batch-file - 删除除 123、1234 和 12345 以外的所有文件夹