1

選択したテキストでタグを検出して、関連するタグボタンのスタイルを変更したい

この作業では、キーアップイベントを使用し、tagController関数でtextAreaコンテンツを送信して、選択したテキストのタグを検出します

しかし、それは正しく動作しません...。

パターン:

   var selMark = [
"\\[b\\](.*?)\\[\\/b\\]",
"\\[p\\](.*?)\\[\\/p\\]"
];

tagControllerプラグイン:

jQuery.fn.extend({

tagController : function(){

    if(document.selection){
            this.focus();
            sel = document.selection.createRange();

            for(i=0; i<selMark.length; i++){
             tag = selMark[i].substring(3,1).replace("[","").toUpperCase();
             if((new RegExp(selMark[i],"gi")).test(sel.text)){
                if(!$("input.tag[value="+tag+"]").hasClass('active')){
                $("input.tag[value="+tag+"]").addClass('active');
                }
             }else{
                $("input.tag[value="+tag+"]").removeClass('active');
                 }
            }
        }else if(this.selectionStart || this.selectionStart == '0'){
            this.focus();
            var startPos = this.selectionStart, endPos = this.selectionEnd;
            sel = this.value.substring(startPos, endPos);
            for(i=0; i<selMark.length; i++){
             tag = selMark[i].substring(3,1).replace("[","").toUpperCase();
             if((new RegExp(selMark[i],"gi")).test(sel)){
                if(!$("input.tag[value="+tag+"]").hasClass('active')){
                $("input.tag[value="+tag+"]").addClass('active');
                }
             }else{
                $("input.tag[value="+tag+"]").removeClass('active');
                 }
            }
    }

    } });

利用方法 :

$(function(){
 var source  = $('#txt');   
   source.keyup(function(){
     source.tagController();
     });
});

このセクションは、パターンリストでタグを検出し、ボタンのスタイルを変更するためのものです

for(i=0; i<selMark.length; i++){
             tag = selMark[i].substring(3,1).replace("[","").toUpperCase();
             if((new RegExp(selMark[i],"gi")).test(sel)){
                if(!$("input.tag[value="+tag+"]").hasClass('active')){
                $("input.tag[value="+tag+"]").addClass('active');
                }
             }else{
                $("input.tag[value="+tag+"]").removeClass('active');
                 }
            }

ご協力いただきありがとうございます :)

4

0 に答える 0