у вас есть несколько вещей неправильно ...
во-первых, HTML добавляемыми должна быть полной - путем добавления открытия и закрытия формы теги отдельно dom будет рассматривать текст. вам следует, вероятно, рассмотреть возможность добавления всей формы сразу или создания ее как отдельного элемента.
Во-вторых, вы добавляете форму после того, как вы связали метод отправки - вам нужно будет привязать метод отправки после того, как форма была добавлена в dom - снова есть много способов, которыми вы могли бы это сделать но простой способ - это функция, которую вы можете вызвать, чтобы связать вашу форму.
см:
http://jsfiddle.net/w5anU/1/
$.fn.serializeObject = function(){
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
$(function() {
bindForms();
});
function bindForms() {
$('form').submit(function() {
data = JSON.stringify($('form').serializeObject());
$('#json').append(data);
return false;
});
}
$(document).ready(function(){
$("#test").append("<form action='' method='post'> <br>test <input type='radio' name='test' value='test'> <br><input type='submit'> <br></form>");
bindForms();
});
в вашем коде функция bindForms вызывается дважды, если вы отправляете первую форму ?? Я думаю, вам не нужно вызывать функцию bindForms внутри '$ (function() { bindForms(); });' ?? –
true - но я оставил его там преднамеренно, чтобы мой пример был таким же, как тот, который был поставлен, с одной формой, загруженной в html, и второй, загруженной с помощью jquery –
Итак, вы сказали бы, когда OP хочет добавить 'form' ему нужно удалить bindForms() из предыдущего места и добавить его сразу же после места, где он добавляет динамическую форму? Это имеет смысл? –