そのため、ファイル入力を含むフォームとそうでないフォームの送信リスナーを別々にしようとしています。リスナーを追加する前に必要な要素をフィルタリングしようとすると、html 本体全体が選択されているようです。これは達成できますか?または、両方のリスナーをすべてのフォームに設定し、送信後にフィルターをかけますか?
http://jsfiddle.net/bi11j0hnst0n/MMzg7/3/
$(function(){
//file form listener
var file_forms = $('input[type=file]').closest('form');
$('body').on('submit', file_forms, function(event){
event.preventDefault();
var form = $(this);
form.css('background-color', 'blue');
setTimeout(function(){
form.css('background-color', 'white');
}, 3000);
});
//regular form listener
var regular_forms = $('form').not($('input[type=file]').closest('form'));
$('body').on('submit', regular_forms, function(event){
event.preventDefault();
var form = $(this);
form.css('background-color', 'red');
setTimeout(function(){
form.css('background-color', 'white');
}, 3000);
});
});