Я новичок в jQuery, но понимаю его по большей части. Моя проблема заключается в том, что когда мой вызов ajax, который обновляет весь div, выполняется, все мои динамически созданные формы не работают. Если вы попытаетесь отправить их, событие не будет работать должным образом и просто попытается подать обычную форму. У меня есть все другие элементы, такие как ссылки, связанные с использованием .live (), которые, похоже, отлично работают. Только форма умирает. Как восстановить динамически созданные формы после вызова ajax? Все они имеют идентификатор formname_id. Я попытался использовать bind, но он не работает, как показано ниже. Любая помощь приветствуется.
Вот код
jQuery(document).ready(function(){ jQuery("form[id^='commentform_']").each(function(){ var id = parseInt(this.id.replace("commentform_", "")); jQuery(this).bind('submit', function(e) { var action = jQuery('#action_' + id).attr('value'); var act_id = ('1'); jQuery.ajax({ type: "POST", url: "ajax/modify.php", data: "action="+ action +"& act_id="+ act_id, success: function(response){ jQuery('#CommentsContainer_' + id).html(response); jQuery('#commentform_' + id)[0].reset(); } }); return false; }); });
});
Попробуйте сделать что-то вроде этого:
jQuery("form[id^='commentform_']").live('submit',function(){ var id = parseInt(this.id.replace("commentform_", "")); var action = jQuery('#action_' + id).attr('value'); var act_id = ('1'); jQuery.ajax({ type: "POST", url: "ajax/modify.php", data: {"action": action, "act_id": act_id}, success: function(response){ jQuery('#CommentsContainer_' + id).html(response); jQuery('#commentform_' + id)[0].reset(); } }); return false; });
Нет необходимости перебирать формы для привязки к ним. Если вы можете использовать делегат вместо того, чтобы жить, сделайте это.
Почему бы вам не перебросить нормальную форму submit:
function addNewitem() { $('#new_item_form').submit(function() { $.get("includes/ItemEdit.php", { newItem: true }, function(msg) { isNewItem = true; $("#new_item").hide(); $('#item_list').hide(); $("#item_edit").html( msg ); $("#item_edit").show(); editActiveEvent(); }); return false; }); }
Не забудьте вернуть false. или выполните .preventDefault
Я получил это, чтобы добавить событие в вызов функции и использовать event.preventDefault (); НО, конечно, только в FF. Не работает в IE7 ..
jQuery("form[id^='commentform_']").live('submit',function(event){ var id = parseInt(this.id.replace("commentform_", "")); var action = jQuery('#action_' + id).attr('value'); var act_id = ('1'); jQuery.ajax({ type: "POST", url: "ajax/modify.php", data: {"action": action, "act_id": act_id}, success: function(response){ jQuery('#CommentsContainer_' + id).html(response); jQuery('#commentform_' + id)[0].reset(); } }); event.preventDefault();});
Но IE7 все еще пытается угасить действие. arrgggh .. Все, что я делаю неправильно ???