Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 根据下拉列表动态更改编辑器配置_Jquery_Ckeditor - Fatal编程技术网

Jquery 根据下拉列表动态更改编辑器配置

Jquery 根据下拉列表动态更改编辑器配置,jquery,ckeditor,Jquery,Ckeditor,我有一个语言下拉列表,我想我的ck编辑器打开在选定的下拉语言,但它没有发生。它适用于first select,但在这之后,它仍然保持不变。我用alert检查了下拉列表值,一切正常 这是我的jquery代码 $(function() { $('.langdropdown').on('change', function() { $('#communication-message').val(''); langval = $('.langdropdown

我有一个语言下拉列表,我想我的ck编辑器打开在选定的下拉语言,但它没有发生。它适用于first select,但在这之后,它仍然保持不变。我用alert检查了下拉列表值,一切正常

这是我的jquery代码

    $(function() {
    $('.langdropdown').on('change', function() {
        $('#communication-message').val('');
        langval = $('.langdropdown').val();
        $('#communication-message').ckeditor({
            language: langval,
            uiColor: '#66FFCC'
        });
    });
 });

在Javascript中,大多数情况下,当一个元素被初始化时,您必须“销毁”,然后使用新值再次初始化该元素。我建议您找到一种“销毁”当前ckeditor实例的方法,然后使用新参数创建一个新实例。尝试以下方法。我还没试过,但应该能用

   $(function() {
    $('.langdropdown').on('change', function() {
        var elem = $('#communication-message');
        var langval = $(this).val();
        elem.val('');
        elem.ckeditorGet().destroy();
        elem.ckeditor({
            language: langval,
            uiColor: '#66FFCC'
        });
    });
});
试试这个

$(document).ready(function () {
    $('#communication-message').ckeditor();
    $('.langdropdown').on("change", function () {
        var langCode = $(this).val();
        $($('#communication-message')).ckeditor(function () {
            this.destroy();
        }).ckeditor({
            language: langCode
        });
    });
});
一个更全面的示例,用于在不更改默认编辑器设置的情况下更改语言。

jsiddle:

因此,我的问题的解决方案之一是在文本框外创建两个div,一旦下拉值改变,删除内部div并将新的文本框再次附加到outerdiv

$(function(){
$( '#communication-message' ).ckeditor({language:'en',uiColor:'#66FFCC'});
$('.langdropdown').on('change',function(){
$('.containerforck1').remove();
//alert('removed');
langval = $('.langdropdown').val();
$('.containerforck').append("<div class='containerforck1'><textarea id='communication-message'  name='message' rows='10' class='span6' required> </textarea></div>");
$( '#communication-message' ).ckeditor({language:langval,uiColor:'#66FFCC'});
});
});
$(函数(){
$(“#通信消息”).ckeditor({语言:'en',uiColor:'#66FFCC'});
$('.langdropdown')。在('change',function()上{
$('.containerforck1').remove();
//警报(“删除”);
langval=$('.langdropdown').val();
$('.containerforck')。追加(“”);
$(“#通信消息”).ckeditor({语言:langval,uiColor:“#66FFCC'});
});
});

你能简化一下吗?谢谢,但它也只适用于第一次修改。我对代码做了一点修改。尝试更新的代码。