2010-01-28 64 views

回答

7
$("input .button-example").click(function(){ 
//do something with $(this) var 
}); 

PS:你有jQuery控制$ var吗?否则,你必须这样做:

jQuery.noConflict(); 
jQuery(document).ready(function(){ 
    jQuery("input .button-example").click(function(){ 
    //do something with jQuery(this) var 
     alert(jQuery(this)); 
    }); 
}); 

,如果你wan't事件控制(表单提交)

$(document).ready(function(){ 
    $("#formid").submit(function() { 
      alert('Handler for .submit() called.'); 
      return false; 
    }); 
}); 

告诉我的东西,如果它的工作;)

+1

我用类似的东西。我绑定点击其他按钮并添加隐藏字段,所以现在服务器获取正确的信息... – newbie 2010-01-29 19:47:25

19

这会抓住任何一个输入元素开始提交:

$(document).ready(function() { 
    var target = null; 
    $('#form :input').focus(function() { 
     target = this; 
     alert(target); 
    }); 
    $('#form').submit(function() { 
     alert(target); 
    }); 
}); 
+0

嗨,thanx建议,但它没有奏效。 – newbie 2010-01-28 13:14:52

+0

如果你做'$('#form:input'),这个方法会更好,点击(函数(){'用'click'代替'focus'。 – olofom 2012-10-24 13:18:43

+0

如果你按下return,则不会触发点击。您需要使用[...]。bind('click focus',function(){[...]})[0123] []] – iRaS 2013-07-31 14:55:55

1
$(document).ready(function() { 
    var clickedVar = null; 
    $('#form :submit').focus(function() { 
     clickedVar = $(this).attr("name"); 
     alert(clickedVar); 
    }); 
}); 
2

以下是我认为如何完成问题的更全面的例子。您应该用您的ID表格替换“#您的表格”,并将您的表格按钮上的值替换为“Button One”&“”Button Two“。

$(document).ready(function() { 
    var target = null; 
    $('#your-form-id :input').focus(function() { 
    target = $(this).val(); 
    }); 
    $('#your-form-id').submit(function() { 

    if (target == 'Button One') { 
     alert (target); 
    } 
    else if (target == 'Button Two') { 
     alert (target); 
    } 
    }); 
}); 
2

这就是我解决它的方法。我受到了上面发布的一些答案的启发,但是我需要一种能够适用于我所有表单的方法,因为我已经动态地加载了它们。

我注意到ajaxSubmit会具有其中由插件做以下描述的data选项:

包含应 表单一起提交额外数据的对象。

这正是我们所需要的。

所以我重视我的提交按钮单击处理和保存使用jQuery元素(我喜欢这种方法不是增加一个假的属性):

$('[type="submit"]').live('click', function(e){ 
     jQuery.data($(this).parents('form')[0], 'submitTrigger', $(this).attr('name')); 
}); 

然后在我的ajaxSubmit会调用我建立的数据对象并派出这样的:

function dialogFormSubmit(form) { 
    var data = {} 
    data[jQuery.data(form, 'submitTrigger')] = true; 
    $(form).ajaxSubmit({ 
     data: data 
    }); 
    return false; 
} 

我建立的数据对象,那是因为我想它的行为方式相同,就好像我会用香草HTML/PHP提交它(输入的名称是关键$ _POST数组)。我想,如果我想保持真实的行为,我会添加提交按钮的值或innerHTML,但我通常只是检查它是否被设置,因此它是无用的:)。

+0

迄今为止我见过的最佳答案。 – 2012-04-18 13:22:53

5

这是我使用(在其他轻微的变化,使用鼠标松开和KeyUp事件,而不是重点):

var submitButton = undefined; 
$('#your-form-id').find(':submit').live('mouseup keyup',function(){ 
    submitButton = $(this); 
}); 
$('#your-form-id').submit(function() { 
    console.log(submitButton.attr('name')); 
}); 
+0

谢谢@thaddeusmt。它的作品很好 – AnNaMaLaI 2012-11-23 07:06:57

+0

这个作品完美。:) – codesnooker 2013-09-19 13:08:38

2

我发现这是非常有用的。它涵盖了点击的情况,并且还提交了选项卡索引并触及空间或进入。它在提交之前捕获最后一个输入,并且这是提交的按钮,所以你可以有几个按钮,并检查每个按钮作为目标执行一些独特的事情。

$('#form input').live('focusin focusout mouseup', function() { 
    // Add a data attribute to the form and save input as last selected 
    $('#form').data('lastSelected', $(this)); 
}); 
$('#form').submit(function() { 
    var last = $(this).data('lastSelected').get(0); 
    var target = $('#button').get(0); 
    console.log(last); 
    console.log(target); 
    // Verify if last selected was our target button 
    if (last == target) { 
     console.log('bingo'); 
     return false; 
    } 
}); 
0

嗨答案没有说服我这么多在这里带来替代。 我要做的是通过JS验证哪个按钮被按下。

<head> 
<script> 
$('body').click(function(event) { 
    var log = $('#log'); 
    if($(event.target).is('#btn1')) { 
     log.html(event.target.id + ' was clicked.'); 
     return false; 
    }else{ 
     if($(event.target).is('#btn2')) { 
      log.html(event.target.id + ' was clicked.'); 
      return false; 
       } 
     } 
}); 
</script> 
</head> 
<body> 
    <form id="formulario" method="post"> 
     <div id="log"></div> 
     <input type="submit" id="btn1" value="Btn 01"> 
     <input type="submit" id="btn2" value="Btn 02"> 
    </form> 
</body> 

使用此页面进行测试Test

Saludos