2015-03-03 15 views
0

我有以下代码:添加所需的内部简码,如果缺少

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

现在我想添加[COL-MD-12]内(直接后)[行]和之前关闭它的[ /行]与jQuery。这应该是结果:

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

(注:上面的代码是不是引导我只是在引导,因为它更明确,就是需要“COL-MD-12”!)

这里是当前代码的一个的jsfiddle例如: http://jsfiddle.net/Zoker/6mzrj1e7/

“转换”有一个后立即“[vc_column宽度=‘1/1’]”缺失内的第一“[vc_row]”和“[/ vc_column]'在结束'[/ vc_row]'之前''。 而这就是我需要添加的简码。我不知道如何证明,如果它的缺失,并添加它然后...

此外,我必须单击按钮上的3次,以获得完全更新的内容。一次点击后我怎样才能使它工作? (编辑:即固定https://stackoverflow.com/a/1145525/2977288一个)

+0

哪里是你已经尝试的JavaScript要做到这一点? – charlietfl 2015-03-03 13:26:01

+0

我2天没想到这个问题,并没有找到任何工作解决方案。我没有任何工作方法:/ – Zoker 2015-03-03 13:45:27

+0

真的不清楚你的高级别问题是什么。你想创建一个编辑器吗? – charlietfl 2015-03-03 13:46:20

回答

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]")); 

+0

这是一个很好的方式来添加它:) 唯一的问题是,我首先需要检查,如果[行]的下一个元素已经是[ col-md- *]并且只添加它,如果没有的话。 – Zoker 2015-03-03 16:45:42

+0

我需要这样的:如果'['和']'='行'之间的文本,然后检查']'后的下一个元素是'[col-md- *' – Zoker 2015-03-03 16:47:47

+0

Dude你真棒!有没有测试,如果短码是[行]? 唯一的问题是,该脚本无法按预期方式正常工作:http://jsfiddle.net/Zoker/6mzrj1e7/11/ – Zoker 2015-03-03 21:07:45