我有一个CKEditor输入字段来输入消息(使用IvoryCKEditor Bundle),存储在名为Event的实体中。
我还有一个名为Reply的实体,它存储消息原型。
因此,观看者可以直接编写消息,或者通过下拉列表选择消息原型。 View here
回复实体有两个属性:名称和文本。 名称显示在下拉列表中,选中后,我希望在文本字段中设置文本。
我看到了这个:dynamic generation of submitted form,但它只有在我的文本字段所依赖的字段位于表单上时才有效,但事实并非如此。
我想知道我是否可以用Jquery做到这一点。
我必须访问所选Reply实体的text属性,并将其放在textarea字段中。
目前我试过这个,看看我是否可以更改textarea的值。
$("#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>
哪个不起作用:$(&#39; #messout&#39;)。var(&#34; bonjour&#34;);什么都不做。 (虽然没有错误)。
我尝试将$(&#34;#message&#34;)替换为$(&#34; .cke-editable&#34;)作为span id =&#34; message&#34;由于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代码中访问Reply的属性,
以及如何更改textarea值。
随意请求更多代码。
谢谢。
答案 0 :(得分:1)
据我了解,您希望根据select form元素中当前选择的选项替换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
最后,您可以创建将替换CKEditor内容的jQuery代码,不应使用.var()
,使用documentation中的.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;
}
})
});