jQuery表单提交:有什么方法可以知道触发提交的元素是什么?

时间:2011-04-12 19:57:06

标签: javascript jquery forms

我正在使用asp.net MVC,当我提交表单时,之前的开发人员嵌入了一些jQuery验证。

$('form').submit(function() {
    ...code done here to validate form fields
});

问题是表单上的“保存”和“取消”按钮都会触发此提交jQuery函数。如果触发“取消”输入按钮,我不想激活验证逻辑(id =“cancel”name =“cancel”value =“cancel”)。 有没有办法在这个提交函数中,我可以检索按下哪个输入按钮提交表单的ID,名称或值?

4 个答案:

答案 0 :(得分:8)

我问了同样的问题:How can I get the button that caused the submit from the form submit event?

我能想到的唯一跨浏览器解决方案是:

$(document).ready(function() {
    $("form").submit(function() { 

    var val = $("input[type=submit][clicked=true]").val()

    // DO WORK

});

$("form input[type=submit]").click(function() {
    $("input[type=submit]", $(this).parents("form")).removeAttr("clicked");
    $(this).attr("clicked", "true");
});

不确定您是否正在寻找答案,但您应将“取消”按钮更改为锚标记。除非您正在处理表单值,否则无需提交取消。

答案 1 :(得分:0)

如果输入按钮的type是这样的话,这只会触发:

<input type='submit' ...

所以请确保取消按钮没有type='submit'并且它应该可以正常工作

答案 2 :(得分:0)

var myForm =   $('form');
$('input[type="submit"]',myForm).click(function(e) {
    var whoClickedsubmit = $(e.target); //further, you can use .attr('id')
    //do other things here
});

修改

.submit(function(event){
    var target = event.originalEvent.explicitOriginalTarget.value;
    //But IE does not have the "explicitOriginalTarget" property
});

答案 3 :(得分:0)

修改

这只适用于FF,而不适用于Chrome(我想,不是在其他基于WebKit的浏览器中),所以我只是将此作为浏览器特定的解决方法,这是一个有趣的注释,但不是作为答案


@ Neal建议不要使用提交类型的取消按钮可能是最干净的方式。但是,如果你必须按照现在的方式进行:

$('form').submit(function(e){
    if(e.originalEvent.explicitOriginalTarget.id === 'cancel'){
        //don't validate
    }
    else{
        //validate
    }
});