如何使Nicedit只影响页面上的一个textarea而不是页面上的每个textarea

时间:2012-06-12 06:19:20

标签: javascript textarea nicedit

我一直在尝试在我的网站(我用来提交短篇故事)的表格上使用nicedit(http://nicedit.com/)。表单包括几个textareas()。其中一个是短篇小说的内容,我想使用nicedit。另一个文本区域用于标签,我不想使用nicedit。但是,nicedit适用于两者。

这是我用来调用nicedit代码的JavaScript代码

<script type="text/javascript" src="core/rte.js"></script> <script type="text/javascript">
//<![CDATA[
bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });
//]]>

我检查了nicEdit.js,allTextAreas()对应于此:

allTextAreas : function(nicOptions) {
var textareas = document.getElementsByTagName("textarea");
for(var i=0;i<textareas.length;i++) {
nicEditors.editors.push(new nicEditor(nicOptions).panelInstance(textareas[i]));
}
return nicEditors.editors;
},

我还对ingetnet进行了调查,并且没有找到关于如何只使一个文本区域受nicedit代码影响的答案。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:16)

通过查看您发布的代码,这应该有效:

<script type="text/javascript" src="core/rte.js"></script>
<script type="text/javascript">
//<![CDATA[
bkLib.onDomLoaded(function() {
    nicEditors.editors.push(
        new nicEditor().panelInstance(
            document.getElementById('myNicEditor')
        )
    );
});
//]]>
</script>

只需给你的textarea你使用的id:

<textarea id="myNicEditor"></textarea>

答案 1 :(得分:1)

我使用原始函数作为起点,通过标记名为所有textareas创建了

<script type="text/javascript">

bkLib.onDomLoaded(function () {

    var textareas = document.getElementsByTagName("textarea");

    for(var i=0;i<textareas.length;i++)
     {
        var myNicEditor = new nicEditor();
        myNicEditor.panelInstance(textareas[i]);

     }
});

答案 2 :(得分:1)

对于那些希望使用多个textarea按类名执行此操作的人,我使用Nathan Wall's example进行了一些更改:

<script type="text/javascript">
  //<![CDATA[
  bkLib.onDomLoaded(function() {
    elementArray = document.getElementsByClassName("nice-edit");
    for (var i = 0; i < elementArray.length; ++i) {
      nicEditors.editors.push(
        new nicEditor().panelInstance(
          elementArray[i]
        )
      );
    }
  });
  //]]>
</script>

使用与您的班级名称nice-edit一样多的文字区域:

<textarea class="nice-edit"></textarea>

在Rails中我使用CoffeeScript,这是我修改过的代码:

$ ->
  #<![CDATA[
  elementArray = document.getElementsByClassName("nice-edit")
  i = 0
  while i < elementArray.length
    nicEditors.editors.push new nicEditor(fullPanel: true).panelInstance(elementArray[i])
    ++i
  #]]>

您会注意到我已完全删除了bkLib.onDomLoaded行,并且只是调用了文档函数的等效函数$ ->。原因是bkLib.onDomLoaded由于 turbolinks 而无法最初加载。它只适用于刷新。这就是为什么我把它删除了。