我想检测选定文本中的标签以更改相关的标签按钮样式
对于这项工作,我正在使用按键事件并在 tagController 函数中发送 textArea 内容以检测所选文本中的标签
但它不能正常工作......
模式:
var selMark = [
"\\[b\\](.*?)\\[\\/b\\]",
"\\[p\\](.*?)\\[\\/p\\]"
];
标签控制器插件:
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');
}
}
谢谢你的帮助 :)