我.submit()为表单提交设置了一个事件。我在页面上也有多个表单,但在此示例中只有一个。我想知道点击了哪个提交按钮而不.click()对每个按钮应用事件。
.submit()
.click()
这是设置:
<html> <head> <title>jQuery research: forms</title> <script type='text/javascript' src='../jquery-1.5.2.min.js'></script> <script type='text/javascript' language='javascript'> $(document).ready(function(){ $('form[name="testform"]').submit( function(event){ process_form_submission(event); } ); }); function process_form_submission( event ) { event.preventDefault(); //var target = $(event.target); var me = event.currentTarget; var data = me.data.value; var which_button = '?'; // <-- this is what I want to know alert( 'data: ' + data + ', button: ' + which_button ); } </script> </head> <body> <h2>Here's my form:</h2> <form action='nothing' method='post' name='testform'> <input type='hidden' name='data' value='blahdatayadda' /> <input type='submit' name='name1' value='value1' /> <input type='submit' name='name2' value='value2' /> </form> </body> </html>
jsfiddle 上的实时示例
除了在每个按钮上应用 .click() 事件之外,还有没有办法确定单击了哪个提交按钮?
我最终想出了这个解决方案,并且效果很好:
$(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"); }); });
在您有多种表格的情况下,您可能需要稍微调整一下,但它仍然应该适用