我使用ajaxSubmit插件发送Ajax表单,但由于某种原因,此插件不会发送input[type=image]
的名称/值。所以现在我在捕获提交事件之前ajaxSubmit将处理表单,我需要知道是否有可能找出哪个按钮被按下?jQuery提交,我怎么知道提交按钮被按下了什么?
回答
$("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;
});
});
告诉我的东西,如果它的工作;)
这会抓住任何一个输入元素开始提交:
$(document).ready(function() {
var target = null;
$('#form :input').focus(function() {
target = this;
alert(target);
});
$('#form').submit(function() {
alert(target);
});
});
$(document).ready(function() {
var clickedVar = null;
$('#form :submit').focus(function() {
clickedVar = $(this).attr("name");
alert(clickedVar);
});
});
以下是我认为如何完成问题的更全面的例子。您应该用您的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);
}
});
});
这就是我解决它的方法。我受到了上面发布的一些答案的启发,但是我需要一种能够适用于我所有表单的方法,因为我已经动态地加载了它们。
我注意到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,但我通常只是检查它是否被设置,因此它是无用的:)。
迄今为止我见过的最佳答案。 – 2012-04-18 13:22:53
这是我使用(在其他轻微的变化,使用鼠标松开和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'));
});
谢谢@thaddeusmt。它的作品很好 – AnNaMaLaI 2012-11-23 07:06:57
这个作品完美。:) – codesnooker 2013-09-19 13:08:38
我发现这是非常有用的。它涵盖了点击的情况,并且还提交了选项卡索引并触及空间或进入。它在提交之前捕获最后一个输入,并且这是提交的按钮,所以你可以有几个按钮,并检查每个按钮作为目标执行一些独特的事情。
$('#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;
}
});
嗨答案没有说服我这么多在这里带来替代。 我要做的是通过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
- 1. 我怎样才能知道哪些提交按钮被点击
- 2. 我怎样才能检查哪个提交按钮被按下?
- 3. 为什么我的提交按钮提交两次?
- 4. 隐藏提交按钮被按下
- 5. MVC其提交按钮被按下
- 6. 提交数据按钮被按下之前提交数据
- 7. PHP - 提交按钮什么也不做
- 8. 为什么类型的按钮提交?
- 9. 为什么我的提交按钮被填充?
- 10. 我的提交按钮的onclick函数发生了什么?
- 11. 图片在Codeigniter中提交按钮 - 我错过了什么?
- 12. 提交不提交按钮
- 13. 提交按钮不提交
- 14. 提交按钮不提交
- 15. 提交按钮不提交
- 16. 为什么下面的jquery代码禁用提交按钮?
- 17. 为什么这个表格提交的点击提交按钮
- 18. 表单未按提交按钮提交
- 19. 我怎样才能使用CSS来提交提交按钮?
- 20. JQuery的 - 除了按钮+ Evertything +提交
- 21. 没有提交按钮的下拉列表。怎么样?
- 22. 提交按钮
- 23. jquery mobile:提交按钮被按下后更改textarea背景
- 24. 当iphone按钮被按下时,jquery不会提交
- 25. jQuery查找提交按钮
- 26. jQuery替换提交按钮
- 27. jquery禁用提交按钮
- 28. Jquery PrettyPhoto提交按钮
- 29. jQuery禁用提交按钮
- 30. JQuery不提交按钮
我用类似的东西。我绑定点击其他按钮并添加隐藏字段,所以现在服务器获取正确的信息... – newbie 2010-01-29 19:47:25