Exactly. jQuery doesn't know which was clicked
by the time it gets around to the serialize method. jQuery knows all
the form input types, but which submit button was clicked? Which
input type image was clicked? It is because of lines 3296 and 3297 of
the serialize function in jQuery. Here are the two source code lines
and the complete methods are listed below for serialize() and
serializeArray() (serializeArray is called by serialize):
3296 (this.checked || /select|textarea/i.test(this.nodeName) ||
3297 /text|hidden|password|search/i.test(this.type));
serialize: function() {
return jQuery.param(this.serializeArray());
},
serializeArray: function() {
return this.map(function(){
return this.elements ? jQuery.makeArray(this.elements)
: this;
})
.filter(function(){
return this.name && !this.disabled &&
(this.checked ||
/select|textarea/i.test(this.nodeName) ||
/text|hidden|password|search/i.test(this.type));
})
.map(function(i, elem){
var val = jQuery(this).val();
return val == null ? null :
jQuery.isArray(val) ?
jQuery.map( val, function(val, i){
return {name: elem.name, value:
val};
}) :
{name: elem.name, value: val};
}).get();
}
It's not checking for input type submit elements. However, you have
it right in your "click" event handler, so use this little workaround:
var post = $(this).attr("name") + "=" + $(this).val();
var data = $(this.form).serialize() + "&" + post;