如果缺少,添加所需的内部短代码

时间:2015-03-03 13:20:43

标签: jquery wordpress shortcode

我有以下代码:

<textarea class="content">
    [row]
        [col-md-12]
            text
        [/col-md-12]
    [/row]
    [row]
        text
    [/row]
</textarea>

现在我想在[row]中直接添加[col-md-12]并在[/ row]之前用jquery关闭它。这应该是结果:

<textarea class="content">
    [row]
        [col-md-12]
            text
        [/col-md-12]
    [/row]
    [row]
        [col-md-12]
            text
        [/col-md-12]
    [/row]
</textarea>

(注意:上面的代码不是bootstrap!我刚刚使用了bootstrap,因为它更清晰,需要“col-md-12”!)

这是当前代码的jsfiddle示例: http://jsfiddle.net/Zoker/6mzrj1e7/

现在在“转换”之后,第一个'[vc_row]'中缺少'[vc_column width =“1/1”]',而在结束'[/ vc_row]'之前有一个'[/ vc_column]'。 这就是我需要添加的短代码。我不知道如何证明,如果它丢失并添加它然后......

此外,我必须在按钮上单击3次才能完全更新内容。单击一下后如何才能使其正常工作? (编辑:用https://stackoverflow.com/a/1145525/2977288固定的那个)

1 个答案:

答案 0 :(得分:1)

LIVE:

很难实现:(希望有所帮助)


// auto_descritive
function wrap_string( str, open_param, close_param ){
    var text = $(".content").text();

    // all indexes of str
    var re = new RegExp(str,'gi'), results = [];
    while (re.exec(text)){
        results.push(re.lastIndex);
    }

    // check each parent param of each str
    for (var i=0; results[i]; i++) {
        var y_param = text.substring(0, results[i]).lastIndexOf(']')+1;
        var x_param = y_param - open_param.length;
        var lastParam = text.substring(x_param, y_param);
        var half1 = text.substring(0, y_param);
        var half2 = text.substring(results[i]+str.length, text.length);
        if (lastParam != open_param) {
            text = half1 + open_param + str + close_param + half2;
            $(".content").text( text );
            // return true if one was wrapped
            return true;
        }
    }

    // return false in case nothing was wrapped
    return false;

}


// wrap all "text" with "[col-md-12] /"
while( wrap_string( "text", "[col-md-12]", "[/col-md-12]" ) );