我已经阅读了这些问题的所有答案,但没有一个能满足我的需求。
此外,我已经问过一个关于动态创建元素绑定的“几乎相似”的问题。我也应用了这些答案(适用于其他脚本),但它不适用于此。
说明:
我有一个表单,我可以在表格中添加一个新行(包含多个单元格的行),其中一个单元格是textarea。我想要做的是能够将nicedit添加到动态创建的这些文本区域。
创建新行和单元格:
var index = 2;
function myCreateFunction() {
var table = document.getElementById("myTable");
var row = table.insertRow(-1);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
var cell3 = row.insertCell(2);
var cell4 = row.insertCell(3);
var cell5 = row.insertCell(4);
cell1.innerHTML = "<textarea type='text' id='des" + index + "' name='des" + index + "' placeholder='' rows='1' class='form-control input-sm' value=''/></textarea>";
cell1.vAlign = "top";
cell2.innerHTML = "<input type='text' id='qu" + index + "' name='qu" + index + "' placeholder='' class='form-control input-sm qu' value=''/>";
cell2.vAlign = "top";
cell3.innerHTML = "<input type='text' id='pu" + index + "' name='pu" + index + "' placeholder='' class='form-control input-sm pu' value=''/>";
cell3.vAlign = "top";
cell4.innerHTML = "<input type='text' id='rl" + index + "' name='rl" + index + "' placeholder='' class='form-control input-sm rl' value=''/>";
cell4.vAlign = "top";
cell5.innerHTML = "<input type='text' id='tl" + index + "' name='tl" + index + "' placeholder='' class='form-control input-sm total' value=''/>";
cell5.vAlign = "top";
index++;
return false;
每个clic添加一行,textarea位于第一个单元格
现在是带有实例的nicedit:
bkLib.onDomLoaded(function() {
var myNicEditor = new nicEditor();
myNicEditor.setPanel('myNicPanel');
myNicEditor.addInstance('des1');
myNicEditor.addInstance('des2');
myNicEditor.addInstance('des3');
myNicEditor.addInstance('des4');
myNicEditor.addInstance('des5');
myNicEditor.addInstance('des6');
myNicEditor.addInstance('des7');
myNicEditor.addInstance('des8');
myNicEditor.addInstance('des9');
myNicEditor.addInstance('des10');
});
在页面上只预装了实例“des1”,并且nicedit工作正常,如果我clic添加行,它将创建一个id为“des2”的行,但是nicedit不适用于它。
这是我试过的,请不要笑,我仍然有限的理解javascript:
我把nicedit加载到函数中:
function addnicedit {
//nicedit code here
}
$("#myTable").on("change", addnicedit);
每当#mytable获得修改(添加新行)并在每次创建新行时运行nicedit函数时,我都会考虑生成此nicEdit代码。但是在这里,nicedit甚至没有加载一次。
我应该提到nicEdit Panel没有加载到每个文本区域,我使用这个例子:http://nicedit.com/demos.php?demo=4它是内联编辑器,我只有面板加载ONCE它应该适用于所有textareas
我希望得到一些帮助,是我的代码'函数'没有正确编写,或者只是不可能使用nicEdit及其加载方式。我在代码中也看到了一个onDomLoaded元素......有什么东西可以实现吗?
任何帮助都非常感谢。
感谢阅读:)
更新
每次创建行时,我都尝试重新初始化nicedit函数:
nicedit函数没有名字所以我给它起了一个名字(试过)
bkLib.onDomLoaded(function initNicEdit() {
var myNicEditor = new nicEditor();
myNicEditor.setPanel('myNicPanel');
// instances
});
在我的函数末尾重新运行函数initNicEdit(),这样就增加了一行:
function myCreateFunction() {
//function here
index++;
initNicEdit();
return false;
但是自从页面刷新后我无法看到效果。我确实得到了假的回报;在我的函数结束时,也在initNicEdit();并在我的按钮上,但它仍然刷新。
我会继续努力。