如何获取输入中使用的一组短代码?

时间:2016-03-10 15:23:13

标签: javascript jquery wordpress shortcode

我有一个插件,我正在为后端的wordpress创建。在一个部分中,用户可以将文本输入文本框。我想更新屏幕顶部的列表,其中包含每次提取密钥时输入的所有短代码及其值。

为此,我编写了以下代码用于测试目的:

$("#BBPlugin-Pages").on("keyup",".BBtextArea",function(e){

    var match = wp.shortcode.next("code", _2upstring, 2);
        if ( ! match ) {
            return;
        }

        else console.log(match.content);
});

所以现在,如果我输入[code] words [/ code],当我输入任何内容时它将返回,但是,如果我稍后在文本框中添加另一个短代码,该代码读取[code] word2 [/ code],它也不会被返回,只返回第一个短代码。有两种方法可以退货吗?

1 个答案:

答案 0 :(得分:0)

请查看here

wp.shortcode.next(标签,文字,索引)

返回 类型:对象 具有一些有用属性的容器对象:

index:匹配发生的索引,因此您可以使用匹配的索引加1来轻松匹配下一个短代码。

var index = 2; // yours initial value - don't know why 2
$("#BBPlugin-Pages").on("keyup",".BBtextArea",function(e){

var match = wp.shortcode.next("code", _2upstring, index);
    if ( ! match ) {
        return;
    }

    else {
        index = match.index + 1;
        console.log(match.content);
    }

})

无法测试 - 但想法是保存当前匹配的索引。并从下一个字符开始新的搜索。

P.S。如果有人可以测试这个 - 如果smth错误,请编写正确的代码示例。

upd:记录下来。 (应该工作,但无法测试环境 - 你应该注意这个想法)

    var index = 2; // yours initial value - don't know why 2
    var all = []; 
$("#BBPlugin-Pages").on("keyup",".BBtextArea",function(e){

var match = wp.shortcode.next("code", _2upstring, index);
    if ( ! match ) {
        return;
    } else {
        index = match.index + 1;
        all.push( match.content );
        console.log(all); // as array
        all.forEach(function(x){ console.log(x); }); // one at a time
    }

})