セーバー。あなたはひびのようです。修正が必要なときにあなたのところに来ます...ユーザーがフォームを送信する前に、jQueryダイアログを使用してコンテンツを確認するユーザー送信のコメントシステムがあります。
最初は問題ありません。ダイアログが正常に起動し、フォームが送信されます。もう一度投稿しようとすると、ajax呼び出しが失敗し、ダイアログが起動せず、デフォルトのフォームが送信されます。
ダイアログは、フォームのajax作成が成功したときにバインドされます。私が知る限り、ダイアログはバインドされているはずですが、確かに何かが欠けています。
これがコードです。
最初のajax呼び出しは、コメントを投稿するためのフォームをもたらします。それが正常に読み込まれると、ユーザーがフォームを送信しようとしたときに呼び出されるダイアログボックスを開始します。
// Make the ajax call for the apppropriate content.
$.ajax({
type: 'Get',
url: 'a/url/to/process/form',
cache: false,
beforeSend: function() {
},
success: function(data) {
$('#commentBox_' + id).html(data).fadeTo('fast', 100);
$('#' + oId).addClass('remove').removeClass('respond').html('Close');
// Destroy the instance if it has already been called.
if(CKEDITOR.instances['comment'])
{
delete CKEDITOR.instances['comment'];
}
$('#discussionComment_' + id).submit(function() {
CKupdate()
});
// Set the editor.
CKEDITOR.replace('comment', {toolbar : 'Basic', skin : 'Office2003', height : 250})
// Set the submit option.
$('#postComment_' + id).live('click', function() {
// Warn the user about submitting. Let them review their comment.
CKupdate() // Update the field with user input content.
$('.ui-dialog-content').dialog("destroy"); // Get rid of any old dialogs lurking around.
// Get the content from the form for the confirmation dialog
var commentTitle = $('#commentSubject_' + id).val();
var commentBody = CKEDITOR.instances['comment_' + id].getData();
// Build the new dialog.
var NewDialog = $('<div>You are about to submit your comment. Verify before submitting.<hr /><h4>' + commentTitle + '</h4><div>' + commentBody + '</div></div>');
$(NewDialog).dialog({
modal: true,
title: 'Confirm Post',
width: 500,
buttons: {
'Submit': function() {
commentPost_ajax(id); // Post the form via ajax.
$(this).dialog('destroy');
},
'Edit': function() {
$(this).dialog('destroy');
return false; // Don't submit the form.
}
}
});
return false;
});// Click to submit form.
},
error: function() {
window.location = "../../post_discussionComment.html?dId<%=dId%>&id=" + id
}
});
// Stay here. We're just starting to have fun.
return false;
そして、これがajaxpostの関数です。
function commentPost_ajax(id) {
// Just close and submit.
$('#discussionComment_' + id).ajaxSubmit({
beforeSend: function() {
$('#discussionComment_' + id + ' input:submit').html('Sending...');
$('#newEntry').attr('id', '');
},
success: function(data) {
$('#commentBox_' + id).after(data);
$('#discussionComment_' + id).remove();
$('#discussionComment_' + id).hide('puff', function() { $(this).remove() }, 'fast');
$('#content_' + id + ' a.remove').removeClass('remove').addClass('respond').html('Respond');
$('.expand').show();
window.location + $('#newEntry');
$('#newEntry').children().effect("highlight", {}, 3000);
},
error: function () {
alert('There was a problem posting your comment. Please try again.');
}
}); // Form submit
}
どんな助けでもいただければ幸いです。私は他の多くの質問を熟読しました、そしてそれらのどれもこれに直接話しません。もしそうなら、私はそれらを見つけることができませんでした。