我有一个CKEditor输入字段来键入消息(使用IvoryCKEditor Bundle),存储在一个名为Event的实体中。
我还有一个名为Reply的实体,它存储消息原型。
因此,查看者可以直接编写消息,也可以通过下拉列表选择消息原型。在此处查看
回复实体有两个要素:名称和文本。名称显示在下拉列表中,选择后,我希望在文本字段中设置文本
我看到了这一点:动态生成提交的表单,但只有当我的文本字段所依赖的字段在表单上时,它才有效,而事实并非如此。
我想知道我是否可以用Jquery做到这一点。
我必须访问所选回复实体的文本属性,并将其放在文本区域字段中。
现在我尝试了这个,看看我是否可以更改我的文本区域的值。
$("#reply").change(function(){
$('#message').var("Bonjour");
});
带有
<select id="reply" class="form-control">
<option>
{{"tracker.reply.labels.none" | trans | capitalize }}
</option>
{% for reply in replies %}
<option>
{{reply.name}}
</option>
{% endfor %}
</select>
和
<span id="message" class="col-md-10">
{{form_errors(formadd.text)}}
{{form_widget(formadd.text)}}
</span>
无效:$('#message').var("bonjour");什么都不做。(不过没有错误)。
我试着用$(".cke-editable")代替$("#message"),因为span id="message"包含了很多嵌套标签,这要归功于CKEditor Wysywig,最终有以下几行:
<body class="cke_editable cke_editable_themed cke_contents_ltr cke_show_borders" contenteditable="true" spellcheck="false">
<p>{#text displayed in the field#}</p>
</body>
当然,对于,任何帮助都将不胜感激
如何进行一般,
如何访问JQuery代码中回复的属性,
以及如何更改文本区域值。
请随时索取更多代码。
谢谢。
据我所知,您希望根据select表单元素中当前选择的选项来替换CKEditor表单元素的内容。
首先,你的选择选项应该有值,所以在Twig模板中添加它们:
{% for reply in replies %}
<option value="{{ reply.name }}">
{{ reply.name }}
</option>
{% endfor %}
第二,你应该得到你的CKEditor实例:
var editor = CKEDITOR.instances['message']; // or replace 'message' with your ckeditor ID
最后,您可以创建jQuery代码来替换CKEditor的内容,您不应该像文档中那样使用.var()
,而应该使用.setData('value')
。您可以使用选择选项中的值来实现一个简单的switch
,它会相应地将文本更改为所选文本,如下所示:
$(document).ready(function() {
$('#reply').change(function() {
switch ($(this).val()) {
case 'Test1':
editor.setData('The test text1');
break;
case 'Test2':
editor.setData('The test text2');
break;
default:
editor.setData('');
break;
}
})
});
以下是上面的jsfiddle示例