javascript - 一种表单中有两个提交按钮。提交函数中的事件可以知道是哪一个吗?

标签 javascript jquery forms form-submit jquery-events

我想知道在 JQuery 中这是否可能:

<form id="testform">
    <input type="text" id="hi" name="hi" />
    <input type="text" id="bye" name="bye" />

    <button type="submit" id="submit1">Use Me</button>
    <button type="submit" id="submit2">No, Use Me </button>
</form>


$('#testform').submit(function(e) {

    e.preventDefault();

    var submiturl;

    if (e.name === 'submit1') { submiturl = '../sendToFactory.cshtml'; }
    else if (e.name === 'submit2') { submiturl = '../sendOverseas.cshtml'; }

    $.ajax({
        url: submiturl,
        data: $('testform').serialize(),
        type: 'POST',
        datatype: 'json',
        success: function (response) {
            //stuff
        },
        error: function (response) {
            //error
        }
    });
});

我知道e.name不正确,但一定有办法做类似的事情,不是吗?

我使用的是 IE9 及以上版本。

最佳答案

您可以将“type='submit'”更改为“type='button'”,这样它就不会提交表单并监听按钮点击:

$("#testform button[type=button]").click(function (e) {
    var submitUrl;
    switch ($(e.target).attr('id')) {
        case 'submit1':
            submitUrl = 'url1.cshtml';
            break;
        case 'submit2':
            submitUrl = 'url2.cshtml';
            break;
    }

    $.ajax({
                //...
    })
});

关于javascript - 一种表单中有两个提交按钮。提交函数中的事件可以知道是哪一个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26162904/

相关文章:

javascript - 如何在本地时刻实例上使用 duration()?

javascript - 带计时器的加法游戏

javascript - 添加工具提示以展开数据表中的子行按钮

php - 如何将输入文本框值的参数传递给 jQuery 中的 ajax

没有回调金字塔的 JQuery Chaining Deferreds

javascript - 更改浏览器缩放级别

javascript - Bootstrap slider 在容器中不起作用

javascript - 如何选择表格中的所有输入字段

php - 如何修复将 php 表单插入 mysql 数据库时出现错误

angularjs - Angular 形式对未选择的选择有效