2011-12-30 95 views
1

设置在tinyMCE的内容我有一个下拉菜单,对这种变化,我需要设置内容TinyMCE的编辑,我需要弄清楚如何比较选择的选项下拉列表和XML标记,以便我可以设置值。使用jQuery时,数据来自XML

这里是我到目前为止所。

http://jsfiddle.net/S6Eqq/25/

不知道是否有更好的方式来实现这一目标。

回答

2

如果它可以帮助你,你应该得到像你下拉框的值:

value = $('#country option:selected').val(); 

而且你的代码...

var xml = '<xmlroot><nodes><id>US</id><desc>I am in the USA Description</desc></nodes><nodes><id>FR</id><desc>I am in the French Description</desc></nodes><nodes><id>ES</id><desc>I am in the Spain Description</desc></nodes></xmlroot>'; 


$(function() { 
    tinyMCE.init({ 
     mode:'textareas' 
    }); 

    $("#country").change(function() { 
     loadText(); 
    }); 

    function loadText() { 
     //In this example you fetch them from the var xml. Later on you can fetch them through a get() function. 
     //$.get('file.xml',{}, function(xml) { 
     var value = $("#country option:selected").val(); 
      $('nodes',xml).each(function() { 
       //Get id of selected XML node 
       id = $(this).find("id").text(); 
       //Get description of selected XML node 
       desc = $(this).find("desc").text(); 
       if (value != "") { 
        if (id.toLowerCase() == value.toLowerCase()) { 
         tinyMCE.activeEditor.setContent(desc); 
        } 
       } 
      }); 

     //}); 
    } 
}); 

所以基本上你不需要取当下拉框的change()事件被触发时的值。

你可以简单地通过利用$('#country option:selected').val();访问您function loadText()方法选择的值。

所以:

var value = $('#country option:selected').val(); 
$.get('file.xml',{}, function(xml) { 
    $('nodes',xml).each(function() { 
    id = $(this).find("id").text(); 
    desc = $(this).find("desc").text(); 
    if (id.toLowerCase() == value.toLowerCase()) { 
     tinyMCE.activateEditor.setContent(desc); 
    } 
    }); 
}); 

注意,你让你的XML的coundescription属性,而这些是不存在的。您在变量中将它们定义为iddesc

其次,你永远不会触发$.get()方法。所以我通过把这个放到function loadText() { ... }中,我在国家选择框更改时触发。

请参阅此处的功能示例:http://jsfiddle.net/S6Eqq/32/

+0

我完全不工作。虽然它不报告任何萤火虫错误,但我猜我们的逻辑不正确。对不起,延迟回复 – Mike 2012-01-03 07:54:06

+0

当然这有效。查看此处:http://jsfiddle.net/S6Eqq/27/ – Jules 2012-01-03 08:19:34

+0

非常感谢,我其实也做了同样的事情,虽然我没有过的功能。问题是我使用tinyMCE.activeEditor(desc);相反,我应该有tinyMCE.activateEditor.setContent(desc);我真的很感谢你的帮助 – Mike 2012-01-03 11:32:31