選択したテキストでタグを検出して、関連するタグボタンのスタイルを変更したい
この作業では、キーアップイベントを使用し、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');
}
}
ご協力いただきありがとうございます :)