使用Javascript中的多个提交按钮处理表单提交

时间:2014-09-25 13:15:15

标签: javascript jquery html forms

我有一个带有多个提交按钮的表单,我想在按下任何一个按钮时捕获它们,并为每个按钮执行不同的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>

查看older answer,我可以在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并从那里执行逻辑?

我不需要有三个提交按钮本身...我只需要一个表单中的三个不同的按钮来执行三种不同的操作。

谢谢!

4 个答案:

答案 0 :(得分:4)

您可以将自定义点击处理程序附加到所有按钮,这样您就可以在提交表单之前检查单击了哪个按钮:

Live Example

$("#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
});

答案 1 :(得分:1)

  

但是我如何区分不同的提交按钮?有没有办法从那里获得价值并执行逻辑?

是的,您可以使用querySelector来抓取具有属性的元素。

document.querySelector('#my-form button[value="button-one"]' )

答案 2 :(得分:1)

使用此

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;
}

答案 3 :(得分:0)

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);
};