フォーム送信用のイベントを設定しました。ページには複数のフォームもありますが、この例では 1 つだけです。各フォームにイベントを.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>
各ボタンに .click() イベントを適用する以外に、どの送信ボタンがクリックされたかを判断する方法はありますか?
ベストアンサー1
私も同じ質問をしました:フォーム送信イベントから送信を引き起こしたボタンを取得するにはどうすればよいですか?
最終的に、この解決策を思いつきましたが、これは非常にうまくいきました。
$(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");
});
});
複数のフォームがある場合は、これを少し調整する必要があるかもしれませんが、それでも適用されるはずです。