用Javascript中的多个提交按钮处理表单提交
Process a Form Submit with Multiple Submit Buttons in Javascript
我有一个带有多个提交按钮的表单,我想捕捉其中任何一个按钮被按下的时间,并为每个按钮执行不同的JS代码。
<form id="my-form">
<input type="email" name="email" placeholder="(Your email)" />
<button type="submit" value="button-one">Go - One</button>
<button type="submit" value="button-two">Go - Two</button>
<button type="submit" value="button-three">Go - Three</button>
</form>
看看一个旧的答案,我可以处理JS:中所有的提交按钮
function processForm(e) {
if (e.preventDefault) e.preventDefault();
/* do what you want with the form */
// You must return false to prevent the default form behavior
return false;
}
var form = document.getElementById('my-form');
if (form.attachEvent) {
form.attachEvent("submit", processForm);
} else {
form.addEventListener("submit", processForm);
}
但是如何区分不同的提交按钮有没有办法获得value
并从中执行逻辑?
我不需要有三个提交按钮,本身……我只需要表单中的三个不同按钮来执行三个不同的操作。
谢谢!
您可以将自定义点击处理程序附加到所有按钮,这样您就可以在提交表单之前检查点击了哪个按钮:
实时示例
$("#my-form button").click(function(ev){
ev.preventDefault()// cancel form submission
if($(this).attr("value")=="button-one"){
//do button 1 thing
}
// $("#my-form").submit(); if you want to submit the form
});
使用此
function processForm(e) {
if (e.preventDefault) e.preventDefault();
/* do what you want with the form */
var submit_type = document.getElementById('my-form').getAttribute("value");
if(submit_type=="button-one"){
}//and so on
// You must return false to prevent the default form behavior
return false;
}
HTML:
<form id = "form" onSubmit = {handleSubmit}>
<input type="email" name="email" placeholder="(Your email)" />
<button type="submit" value="button-one">Go - One</button>
<button type="submit" value="button-two">Go - Two</button>
<button type="submit" value="button-three">Go - Three</button>
</form>
JS:
const handleSubmit = e => {
e.preventDefault();
var ans = document.activeElement['value'];
console.log(ans);
};
您还可以使用SubmitEvent
的只读submitter
属性。
HTML(与您的相同):
<form id="my-form">
<input type="email" name="email" placeholder="(Your email)" />
<button type="submit" value="button-one">Go - One</button>
<button type="submit" value="button-two">Go - Two</button>
<button type="submit" value="button-three">Go - Three</button>
</form>
JS:
let form = document.getElementById("my-form");
form.addEventListener("submit", handleSubmit);
function handleSubmit(event) {
event.preventDefault()
alert(event.submitter.value) // shows a different value depending on button pressed
从那时起,很容易使用submitter
作为控制流,例如:
let form = document.getElementById("my-form");
form.addEventListener("submit", handleSubmit);
function handleSubmit(event) {
event.preventDefault()
submitter = event.submitter.value
switch (submitter) {
case "button-one":
alert(1)
break;
case "button-two":
alert(2)
break;
case "button-three":
alert(3)
break;
}
}
但是我如何区分不同的提交按钮呢?有没有一种方法可以从中获取值并执行逻辑?
是的,您可以使用querySelector
来获取具有属性的元素。
document.querySelector('#my-form button[value="button-one"]' )
相关文章:
- 带有验证和隐藏字段值的提交按钮
- 如何在 API 调用后和 if 语句中启用提交按钮
- 提交按钮,该按钮位于使用 Excel VBA 的 Javascript 中
- 如何使用提交按钮搜索表中的记录
- 在单击按钮前后禁用提交按钮
- 在表单完成并确认密码之前,请禁用提交按钮
- 如何使用Java脚本创建提交按钮's的拖放功能
- 如何在单击“提交”按钮时为“新建”窗口编写JavaScript,用“确定”和“取消”显示注册信息
- 提交按钮通过JQuery和JavaScript函数所做的更改不会持续
- 从输入时提交到jQuery,无需提交按钮,无需表单操作
- onclick提交按钮JSP
- 通过提交按钮传递值
- 如果ng单击附加到提交按钮,则表单未验证
- 如何在Razor MVC 5.2.3 Ajax中使用多个提交按钮
- 使用提交按钮隐藏未选中的单选按钮
- Ruby/JS如何在提交按钮后重新加载页面
- JavaScript表单提交没有't fire asp服务器端点击功能的提交按钮
- 使用javascript后,提交按钮不起作用
- 如何使用jQuery/Ajax响应特定的提交按钮
- 表单中的提交按钮在 PHP 打印中不起作用