Javascript 威梅迪托赢得';t将内容反映到文本区域值中
我开始在网站上的所有内容类型中部署WYMeditor,它看起来不错。现在我看到它是如何工作的保存和查看,但它没有提交任何东西,我不知道为什么 我已经从几个角度看了这个问题。在这一点上,我甚至会使用monkeypatch,如果我能学会如何自己获取数据,我可以在提交时将其粘贴到字段中。这或其自身不起作用的真正原因将是巨大的。有人有想法吗Javascript 威梅迪托赢得';t将内容反映到文本区域值中,javascript,jquery,wymeditor,Javascript,Jquery,Wymeditor,我开始在网站上的所有内容类型中部署WYMeditor,它看起来不错。现在我看到它是如何工作的保存和查看,但它没有提交任何东西,我不知道为什么 我已经从几个角度看了这个问题。在这一点上,我甚至会使用monkeypatch,如果我能学会如何自己获取数据,我可以在提交时将其粘贴到字段中。这或其自身不起作用的真正原因将是巨大的。有人有想法吗 <li><label for="id_comment">comment on this article:</label> <
<li><label for="id_comment">comment on this article:</label> <textarea id="id_comment" rows="10" cols="40" name="comment"></textarea>
<script type="text/javascript">
$(document).ready(function(){
jQuery("#id_comment").wymeditor({
"toolsItems":[
{
"name":"Bold",
"css":"wym_tools_strong",
"title":"Strong"
},
{
"name":"Italic",
"css":"wym_tools_emphasis",
"title":"Emphasis"
},
{
"name":"InsertOrderedList",
"css":"wym_tools_ordered_list",
"title":"Ordered_List"
},
{
"name":"InsertUnorderedList",
"css":"wym_tools_unordered_list",
"title":"Unordered_List"
},
{
"name":"Indent",
"css":"wym_tools_indent",
"title":"Indent"
},
{
"name":"Outdent",
"css":"wym_tools_outdent",
"title":"Outdent"
},
{
"name":"Undo",
"css":"wym_tools_undo",
"title":"Undo"
},
{
"name":"Redo",
"css":"wym_tools_redo",
"title":"Redo"
},
{
"name":"CreateLink",
"css":"wym_tools_link",
"title":"Link"
},
{
"name":"Unlink",
"css":"wym_tools_unlink",
"title":"Unlink"
},
{
"name":"Paste",
"css":"wym_tools_paste",
"title":"Paste_From_Word"
}
],
"logoHtml":"",
"updateEvent":"blur",
"stylesheet":"/static/yui/tiny_mce.css",
"skin":"twopanels",
"classesHtml":"",
"updateSelector":"textarea"
});
});
</script></li>
对本文的评论:
$(文档).ready(函数(){
jQuery(“#id_comment”).wymeditor({
“工具站点”:[
{
“名称”:“粗体”,
“css”:“wym_tools_strong”,
“标题”:“强”
},
{
“名称”:“斜体”,
“css”:“wym_工具强调”,
“标题”:“强调”
},
{
“名称”:“InsertOrderedList”,
“css”:“wym_工具_有序列表”,
“标题”:“有序列表”
},
{
“名称”:“InsertunderedList”,
“css”:“wym工具无序列表”,
“标题”:“无序列表”
},
{
“名称”:“缩进”,
“css”:“wym_工具缩进”,
“标题”:“缩进”
},
{
“名称”:“Outdent”,
“css”:“wym_tools_outdent”,
“标题”:“Outdent”
},
{
“名称”:“撤消”,
“css”:“wym_工具_撤销”,
“标题”:“撤消”
},
{
“名称”:“重做”,
“css”:“wym_工具_重做”,
“标题”:“重做”
},
{
“名称”:“CreateLink”,
“css”:“wym_工具_链接”,
“标题”:“链接”
},
{
“名称”:“取消链接”,
“css”:“wym_工具_取消链接”,
“标题”:“取消链接”
},
{
“名称”:“粘贴”,
“css”:“wym_工具_粘贴”,
“标题”:“从单词粘贴”
}
],
“logoHtml”:“,
“updateEvent”:“blur”,
“样式表”:“/static/yui/tiny_mce.css”,
“皮肤”:“两个面板”,
“classesHtml”:“,
“更新选择器”:“文本区域”
});
});
我也遇到了同样的问题,通过查看他们网站提供的wymexamples目录中的示例1,我注意到Wymeditor使用特殊元素类(CSS类)来指示页面中需要添加额外行为的部分
特别是,submit按钮有一个wymupdate类,我认为这会导致预提交处理程序与控件相关联
一旦我将wymupdate类添加到源代码中的submit按钮中,textarea字段就会在提交之前用HTML填充,并显示在服务器端的正确POST变量中
我在下面包含了示例源中的相关位,这些位使它能够工作
<script type="text/javascript">
jQuery(function() {
jQuery('.wymeditor').wymeditor();
});
</script>
jQuery(函数(){
jQuery('.wymeditor').wymeditor();
});
菲罗,世界/P
…尽管wymupdate类关联似乎是automagic,但wymeditor类关联会被显式触发,如
中所示,这必须导致它查找wymupdate类的内容 而不是这个:
"updateEvent":"blur",
"updateSelector":"textarea"
你需要:
"updateEvent":"click",
"updateSelector":"[type=submit]"
您还可以强制更新所有WyMediators,这是我在实际提交之前需要做的,因为我有自定义功能来操作textarea内容
document.addEventListener('submit',function(e){
e.preventDefault();
//update all the wymeditors
var i=0,wym = jQuery.wymeditors(i);
while(wym){
i++;
wym._element.html(wym.xhtml());
//wym.update();//would use this, but it is not reliable
wym = jQuery.wymeditors(i);
}
e.target.submit();
});
不幸的是,这不是我遇到的问题。这不是我提交时原始文本区域获得正确内容的问题(确实如此),而是当我启用html编辑模式,然后显示原始html文本区域和WYMeditor的富文本编辑字段时,编辑一个不会改变另一个。没错,没有wymupdate类,WYMeditor不会将更改反映回textarea。这是正确的。我用
updateSelector:'form'
和updateEvent:'submit
使它变得更加通用。看起来很有效。
document.addEventListener('submit',function(e){
e.preventDefault();
//update all the wymeditors
var i=0,wym = jQuery.wymeditors(i);
while(wym){
i++;
wym._element.html(wym.xhtml());
//wym.update();//would use this, but it is not reliable
wym = jQuery.wymeditors(i);
}
e.target.submit();
});