PDA

Visualizza versione completa : JavaScript: Form Text Editing



follettomalefico
06-03-2004, 13.29.44
L'ida di fondo č realizzare un sistema da "editor testuale" per semplificare certi task di scrittura nei form online.

La funzionalitą in questione č la possibilitą di formattare il testo selezionato.
Ovvero, in un input textarea ad esempio scrivere un testo, quindi selezionare una parola. Premendo il tasto "B" verranno aggiunti intorno a tale parte selezionata i tag <b> e </b>.
Il tipo di tag č specificabile con il parametro tagname.



/**
* Form Edit
* by Folletto Malefico "@
*/

function tag(textbox, tagname)
{
txt = getSelectionText(textbox);

if (txt && txt != textbox.value)
{
txt = '<' + tagname + '>' + txt + '</' + tagname + '>';

setSelectionText(textbox, txt);
}
}

function getSelectionText(textbox)
{
var txt;

//if (document.getSelection()) txt = document.getSelection() + '[a]';

// ****** IE
if (document.selection)
{
txt = document.selection.createRange().text;
}

// ****** FireFox (Mozilla 1.4)
if (!txt)
{
var val = textbox.value;
var selStart = textbox.selectionStart;
var selEnd = textbox.selectionEnd;
txt = textbox.value.substring(selStart, selEnd);
}


return txt;
}

function setSelectionText(textbox, txt)
{
var flag = false;

// ****** IE
if (document.selection)
{
caretPos = document.selection.createRange().duplicate();
caretPos.text = txt;
flag = true;
}

// ****** FireFox (Mozilla 1.4)
if (!flag)
{
var val = textbox.value;
var selStart = textbox.selectionStart;
var selEnd = textbox.selectionEnd;

var first = val.substring(0, selStart);
var last = val.substring(selEnd, val.length);

textbox.value = first + txt + last;
}
}


Il codice funziona per ora, come scritto, su IE 6.0, FireFox e Mozilla 1.4. Ovvero dove ho avuto modo di testarlo... e gią mi sembra piuttosto valido. :)

Mancano ancora delle funzionalitą in caso di browser non compatibili (Konqueror) e nel caso che nessun testo sia selezionato, che devo ancora implementare. :)

Yoghi
14-03-2004, 19.14.44
Tu roxy sempre :foll:

follettomalefico
23-03-2004, 13.48.13
Effettivamente, io son troppo isi :D

Inutile, c'č gią di meglio:
http://www.interactivetools.com/products/htmlarea/