检测是否没有开始标记

时间:2015-08-01 00:50:22

标签: javascript tags element

我使用属性<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");
        }           
    });

1 个答案:

答案 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");
    }           
});

谢谢......哈哈