根据不相关的实体动态更改文本字段值



我有一个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示例

最新更新