从 JQuery 中的 CK 编辑器文本区域获取文本
Get text from CK Editor textarea in JQuery
我正在应用程序中使用 CK 编辑器。
<textarea name="contentDetails" id="contentDetails" rows="10" cols="80"></textarea>
但我无法从该文本区域检索文本。我试过了-
var content= $("#contentDetails").text(); //and also .val() & .html()
但是 content
变量仍然是空的。
有什么想法吗?
//UPDATE - add my codes below
<script>
CKEDITOR.replace('contentDetails');
$(function () {
$("#submitcontent").click(function (e) {
e.preventDefault();
var content= $("#contentDetails").text();
});
});
</script>
根据官方文档:CKEditor Dom Element
尝试
textarea = document.getElementById('contentDetails');
textareaNode = new CKEDITOR.dom.element(textarea);
textareaNode.getValue();
Ckeditor 将用它自己的元素替换您的文本区域,这就是您需要从中获取 html 的地方。如果您检查原始文本区域,您会发现它是空的,内容实际上是编辑器生成的一堆 html 中的其他地方。尝试使用 inspect element 为包含您可以使用的内容的元素查找选择器。确保您的 jQuery 在编辑器初始化后执行。
使用:
var text = CKEDITOR.instances.contentDetails.getData();
官方CKEditor jQuery adapter guide解释:
// Get the editor data.
var data = $( 'textarea.editor' ).val();
// Set the editor data.
$( 'textarea.editor' ).val( 'My new content' );
这里还有一个例子(基于CKEditor5):
let theEditor;
ClassicEditor
.create(document.querySelector('#contentDetails'))
.then(editor => {
theEditor = editor;
})
.catch(error => {
console.error(error);
});
function getDataFromTheEditor() {
return theEditor.getData();
}
document.getElementById('getdata').addEventListener('click', () => {
alert(getDataFromTheEditor());
});
<script src="https://cdn.ckeditor.com/ckeditor5/10.0.1/classic/ckeditor.js"></script>
<textarea name="contentDetails" id="contentDetails" rows="10" cols="80">
<p>Here goes the initial content of the editor.</p>
</textarea>
<button id="getdata">Print data</button>
我正在应用程序中使用 CK 编辑器。
<textarea name="contentDetails" id="contentDetails" rows="10" cols="80"></textarea>
但我无法从该文本区域检索文本。我试过了-
var content= $("#contentDetails").text(); //and also .val() & .html()
但是 content
变量仍然是空的。
有什么想法吗?
//UPDATE - add my codes below
<script>
CKEDITOR.replace('contentDetails');
$(function () {
$("#submitcontent").click(function (e) {
e.preventDefault();
var content= $("#contentDetails").text();
});
});
</script>
根据官方文档:CKEditor Dom Element
尝试
textarea = document.getElementById('contentDetails');
textareaNode = new CKEDITOR.dom.element(textarea);
textareaNode.getValue();
Ckeditor 将用它自己的元素替换您的文本区域,这就是您需要从中获取 html 的地方。如果您检查原始文本区域,您会发现它是空的,内容实际上是编辑器生成的一堆 html 中的其他地方。尝试使用 inspect element 为包含您可以使用的内容的元素查找选择器。确保您的 jQuery 在编辑器初始化后执行。
使用:
var text = CKEDITOR.instances.contentDetails.getData();
官方CKEditor jQuery adapter guide解释:
// Get the editor data.
var data = $( 'textarea.editor' ).val();
// Set the editor data.
$( 'textarea.editor' ).val( 'My new content' );
这里还有一个例子(基于CKEditor5):
let theEditor;
ClassicEditor
.create(document.querySelector('#contentDetails'))
.then(editor => {
theEditor = editor;
})
.catch(error => {
console.error(error);
});
function getDataFromTheEditor() {
return theEditor.getData();
}
document.getElementById('getdata').addEventListener('click', () => {
alert(getDataFromTheEditor());
});
<script src="https://cdn.ckeditor.com/ckeditor5/10.0.1/classic/ckeditor.js"></script>
<textarea name="contentDetails" id="contentDetails" rows="10" cols="80">
<p>Here goes the initial content of the editor.</p>
</textarea>
<button id="getdata">Print data</button>