使用键上事件检测textarea中的标签

时间:2012-10-01 18:05:48

标签: regex event-handling

我希望在所选文本中检测变量相关标签按钮样式的标签

这项工作我正在使用key up事件并在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');
                 }
            }

感谢您的帮助:)

0 个答案:

没有答案