发现哪个表单按钮触发提交

时间:2011-05-11 16:23:48

标签: javascript jquery

在我的表单中,我有两个提交按钮。

<input type="submit" name="save" value="Save as draft"/>
<input type="submit" name="send" value="Start sending" />

在将表单提交回服务器之前,我想根据点击的按钮执行特定任务。

$('form').submit(function(){
    if submit equals save
       task 1;
    elseif submit equals send
       task 2               
}

如何查看按下了哪个按钮?

4 个答案:

答案 0 :(得分:5)

如果是我,我会以不同的方式做到这一点。我会做一些事情 -

<button type='button' id='formSave'>Save as draft</button>
<button type='button' id='formSend'>Start Sending</button>

$('#formSave').click(function(){
    //submit form
    //task 1
});

$('#formSend').click(function(){
    //submit form
    //task 2
});

我只是根据你的按钮名称做出了我的答案,但是听起来你觉得你想做一些类似的事情。

答案 1 :(得分:5)

$(":submit").click(function() {
    $("form").data("submit-button", this.name);
});

$("form").submit(function() {
    var button = $(this).data("submit-button");
    ...
});

在存储名称的提交按钮上添加一个点击处理程序。然后在提交处理程序中提取该名称。

答案 2 :(得分:-1)

$('input').each(function(n) {
  $(this).click( function() {
    var name = $(this).attr('name');

    if (name === 'save') {
       // do stuff
    }else if (name === 'submit'){
       // do some other stuff
    }
   }
});

当然你也可以使用switch语句。

如果您要执行的工作复杂且方式不同,则应考虑使用2种不同的形式

我希望这能回答你的问题

修改

$('input:submit').click(function(n) {
    var name = $(this).attr('name');
    if (name === 'save') {
       // do stuff
    }else if (name === 'submit'){
       // do some other stuff
    }
   }
});

答案 3 :(得分:-2)

我建议使用HurnsMobile的方法,但是如果你绝对需要一个函数来处理这两个按钮,你可以使用jQuery事件对象来检测按钮,

$('form').submit(function(event){
    if(event.target.name == 'save') {
        // do save task
    } else if (event.target.name == 'send') {
        // do send task
    }  
});