gpt4 book ai didi

jquery - 使用 AJAX 和 Jquery 保存 tinymce 编辑器

转载 作者:行者123 更新时间:2023-12-01 00:11:18 24 4
gpt4 key购买 nike

我一直在阅读与此问题类似的问题,并且已经取得了很大的进展,但显然我的情况略有不同,所以我仍在尝试解决这个问题。

我有一个表单,其中包含使用 Tinymce html 编辑器设置样式的文本区域。我希望文本区域能够使用 AJAX 自动保存。

我一直在使用根据时间间隔保存文本区域的代码:

$(document).ready(function() {

$(function() {
// Here we have the auto_save() function run every 30 secs
// We also pass the argument 'editor_id' which is the ID for the textarea tag
setInterval("auto_save('editor_id')",30000);
});

});

// Here is the auto_save() function that will be called every 30 secs
function auto_save(editor_id) {

// First we check if any changes have been made to the editor window
if(tinyMCE.getInstanceById(editor_id).isDirty()) {
// If so, then we start the auto-save process
// First we get the content in the editor window and make it URL friendly
var content = tinyMCE.get(editor_id);
var notDirty = tinyMCE.get(editor_id);
content = escape(content.getContent());
content = content.replace("+", "%2B");
content = content.replace("/", "%2F");
// We then start our jQuery AJAX function
$.ajax({
url: "PAFormAJAX.asp", // the path/name that will process our request
type: "POST",
data: "itemValue=" + content,
success: function(msg) {
alert(msg);
// Here we reset the editor's changed (dirty) status
// This prevents the editor from performing another auto-save
// until more changes are made
notDirty.isNotDirty = true;
}
});
// If nothing has changed, don't do anything
} else {
return false;
}
}

这是有效的,但我的问题是,表单元素是动态创建的,所以我并不总是有可以使用的静态 editor_id。如何更新它以接受动态 ID?

例如,这是一个文本区域,其 id 是通过 ASP 动态设置的:

<textarea id="Com<%=QuesID%>" row= "1" cols= "120" name="Com<%=QuesID%>" QuesID="<%=QuesID%>" wrap tabindex="21" rows="10" class="formTxt"><%=TempTxt%></textarea>

此外,我正在尝试找出一种方法,不仅可以在一定时间间隔内调用保存函数,而且可以在用户单击文本区域并失去焦点时调用保存函数。我不知道如何做到这一点,因为 TinyMce 显然将其从文本区域更改为 iframe。

非常感谢任何帮助。

最佳答案

tinyMCE.editors 将使您能够访问页面上的所有编辑器。请参阅http://www.tinymce.com/wiki.php/API3:property.tinymce.editors

所以你可以将代码更改为

$(document).ready(function() {
setInterval(function() {
for (edId in tinyMCE.editors)
auto_save(edId);
},30000);
});

这将每 30 秒保存页面上的每个编辑器。我不确定这是否是你想要的。如果您只想访问当前事件的编辑器,还有 tinyMCE.activeEditor

回答您的以下问题:

1.您应该能够使用文本区域的模糊事件来触发保存。

$(document).ready(function() {
for (edId in tinyMCE.editors) {
$('#' + edId).blur(function() {
auto_save($(this).attr('id'));
});
}
});

2.如果您想从 auto_save 函数内部访问 QuesID,您可以使用

var quesId = $('#' + editor_id).attr('QuesID');

关于jquery - 使用 AJAX 和 Jquery 保存 tinymce 编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10021500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com