Tempo fa, ho realizzato, prendendo spunto da internet o realizzando il codice da zero, non ricordo bene, una funzione per l'inserimento del BBCode in una textarea:
In realtà rispetto a quella che avevo realizzato tempo fa lo modificata permettendo l'inserimento delle liste, del tag [ img ], e altri.., in poche parole, la funzione se richiamata, ad esempio in questo modo:
addBBCode("[ b ]%s[ /b ]")
Inserisce il codice desiderato dove si trova il cursore, con all'interno il testo selezionato se c'è ne bisogno.
Scrivo questa nuova discussione per sapere se la funzione qui sopra, secondo voi, può essere migliorata? se si come?
In'oltre, cosa fondamentale, per il qui scrivo questo messaggio, è che vorrei sapere, come è possibile far posizionare il mouse all'interno dei tag BBCode, una volta che la funzione gli a inseriti? non so se mi sono spiegato.
P.S.: Ho inserito degli spazi, che in realtà non ci sono, tra i tag che ho scritto, per evitare che mi venissero interpretati dal forum.
Codice:
function addBBCode(str)
{
var el = document.getElementById("comment");
switch (str) {
case "list":
var li = new Array();
var tmp = null;
var i = 0;
str = "[ list ]\n";
do {
tmp = prompt("Inserisci un'elemento della lista\nLascia la casella vuota o premi annulla per completare la lista.");
if (tmp == "") tmp = null;
if (tmp != "" && tmp != null) li[i] = tmp;
i++
} while (tmp != null);
for (i = 0; i < li.length; i++) {
str += " [ * ]" + li[i] + "\n";
}
str += "[/ list ]";
break;
case "list1":
var li = new Array();
var tmp = null;
var i = 0;
str = "[ list='1' ]\n";
do {
tmp = prompt("Inserisci un'elemento della lista\nLascia la casella vuota o premi annulla per completare la lista.");
if (tmp == "") tmp = null;
if (tmp != "" && tmp != null) li[i] = tmp;
i++
} while (tmp != null);
for (i = 0; i < li.length; i++) {
str += " [ * ]" + li[i] + "\n";
}
str += "[ /list ]";
break;
case "link":
var url = "";
var txt = "";
url = prompt("Scrivi l'indirizzo del link.", "http://");
if (url == "" || url == null) {
return false;
}else {
if (el.selectionStart != null) {
txt = prompt("Scrivi il testo del link.\nLascia il campo vuoto o premu Anulla per inserire lo stesso testo dell'indirizzo.", el.value.substring(el.selectionStart, el.selectionEnd));
}else {
txt = prompt("Scrivi il testo del link.\nLascia il campo vuoto o premu Anulla per inserire lo stesso testo dell'indirizzo.");
}
if (txt == "" || txt == null) txt = url;
str = "[ url='" + url + "' ]" + txt + "[ /url ]";
}
break;
case "mail":
var adress = "";
if (el.selectionStart != null) {
adress = prompt("Scrivi l'indirizzo email.", el.value.substring(el.selectionStart, el.selectionEnd));
}else {
adress = prompt("Scrivi l'indirizzo email.");
}
if (adress == "" || adress == null) {
return false;
}else {
str = "[ mail ]" + adress + "[ /mail ]";
}
break;
case "img":
var adress = "";
adress = prompt("Scrivi l'indirizzo dell'immagine.");
if (adress != "" && adress != null) {
str = "[ img ]" + adress + "[ /img ]";
}else {
return false;
}
break;
}
if (el.selectionStart != null) {
var start = el.selectionStart;
var end = el.selectionEnd;
el.value = el.value.substring(0, start) + str.replace('%s', el.value.substring(start, end)) + el.value.substring(end);
}else if (el.selection != null) {
var range = document.selection.createRange();
var range = _window.document.selection.createRange();
var stored_range = range.duplicate();
stored_range.moveToElementText(el);
stored_range.setEndPoint('EndToEnd', range);
var start = stored_range.text.length - range.text.length;
var end = start + range.text.length;
el.value = el.value.substring(0, start) + str.replace('%s', el.value.substring(start, end)) + el.value.substring(end);
}else {
el.value = el.value + str.replace('%s', '');
}
}
In realtà rispetto a quella che avevo realizzato tempo fa lo modificata permettendo l'inserimento delle liste, del tag [ img ], e altri.., in poche parole, la funzione se richiamata, ad esempio in questo modo:
addBBCode("[ b ]%s[ /b ]")
Inserisce il codice desiderato dove si trova il cursore, con all'interno il testo selezionato se c'è ne bisogno.
Scrivo questa nuova discussione per sapere se la funzione qui sopra, secondo voi, può essere migliorata? se si come?
In'oltre, cosa fondamentale, per il qui scrivo questo messaggio, è che vorrei sapere, come è possibile far posizionare il mouse all'interno dei tag BBCode, una volta che la funzione gli a inseriti? non so se mi sono spiegato.
P.S.: Ho inserito degli spazi, che in realtà non ci sono, tra i tag che ho scritto, per evitare che mi venissero interpretati dal forum.
Ultima modifica: