我使用属性<div id="canEdit">
制作contentEditable=true
。
在#canEdit
下方,我创建了一个“切换到HTML”按钮,它会将<div>
转换为<textarea>
,它会显示#canEdit
内的源代码.. < / p>
它将是一个转换回COMPOSE模式的按钮......
这里的问题是,
当我在没有开始标记的情况下添加额外的</div>
(在HTML模式中)时,</div>
下方的代码将在切换到COMPOSE MODE之后超出#canEdit的框
我的问题是,
如何删除/阻止</div>
没有开始标记..
p / s:我相信在这个网站上也不允许&lt; / div&gt;没有开始标记(或没有单击代码示例),这就是为什么我必须在常用斜杠(&lt; / div&gt;)之前先放反斜杠...如果没有,标记将被擦除..
所以,怎么做..如何删除</div>
而不打开标签
$('#toggleHtmlCompose').click(function(){
if ($('#tulis').is('div')) {
tempisi=$('#tulis').html();
$('#tulis').replaceWith("<div><textarea id=\"tulis\" style=\"text-align:left\">"+tempisi+"</textarea></div>");
$(this).val("Switch to Compose Mode");
}
else if ($('#tulis').is('textarea')) {
tempisi=$('#tulis').val();
tempisi=tempisi.replace(/<\/div> *without opening tag*/g,""); // problem
$('#tulis').parent().replaceWith("<div id=\"tulis\" contentEditable=\"true\" ></div>");
$('#tulis').html(tempisi);
$(this).val("Switch to HTML Mode");
}
});
答案 0 :(得分:0)
而不是删除额外的</div>
,
我已经发出警告说&#34;错误!必须有额外的&lt; / div&gt;在你的代码&#34;
$('#toggleHtmlCompose').click(function(){
if ($('#tulis').is('div')) {
tempisi=$('#tulis').html();
$('#tulis').replaceWith("<div><textarea id=\"tulis\" style=\"text-align:left\">"+tempisi+"</textarea></div>");
$(this).val("Switch to Compose Mode");
}
else if ($('#tulis').is('textarea')) {
tempisi=$('#tulis').val();
var CalcDivOpen=(tempisi.match(/<div/g)).length; //this is the solution
var CalcDivClose=(tempisi.match(/<\/div/g)).length; //this is the solution
if (CalcDivOpen!=CalcDivClose) {
alert("Error! There must be an extra <div> inside your code. ");
return false;
} //this is the solution
$('#tulis').parent().replaceWith("<div id=\"tulis\" contentEditable=\"true\" ></div>");
$('#tulis').html(tempisi);
$(this).val("Switch to HTML Mode");
}
});
谢谢......哈哈