Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: JS: Lisää tagit textareaan

MIB [06.05.2009 17:11:11]

#

Moi.

Tämmösen koodin löysin netistä:

***tiedosto.js
//bbcode insertion..

//define tags, to let the script know when a tag is open and needs to be closed
var b = 2;
var i = 2;
var u = 2;
var s = 2;
var q = 2;
var center = 2;
var url = 2;
var img = 2;
var youtube = 2;

//function to insert tags
function tag(v, tagadd, newbut, tagclose, oldbut, name) {
    //our text box
    var txt = window.document.viesti.post;

    //ie handles selections differently
    if (document.selection) {

        //if text is selected, wrap the tags
        theSelection = document.selection.createRange().text;
        if (theSelection) {

        document.selection.createRange().text = tagadd + theSelection + tagclose;
        txt.focus();
        theSelection = '';
        }
        else{

        //if there are no open tags of this type, open one
        if (eval(v)%2 == 0) {
         document.getElementById(name).value = newbut;
        txt.focus();
        sel = document.selection.createRange();
        sel.text = tagadd;
    } else {

        //otherwise, close the tag
        document.getElementById(name).value = oldbut;
        txt.focus();
        sel = document.selection.createRange();
        sel.text = tagclose;
    }
    }
    //add to the total number of tags, if the tag just added was an opening tag, the number will be odd and the script will know to close it next time
    eval(v+"++;");
        }

//firefox time =)
else{

    //if text is selected, wrap the tags
    if((txt.value).substring(txt.selectionStart, txt.selectionEnd) != ''){
           txt.value = (txt.value).substring(0, txt.selectionStart) + tagadd + (txt.value).substring(txt.selectionStart, txt.selectionEnd) + tagclose + (txt.value).substring(txt.selectionEnd, txt.textLength);
        return;
        }
        else{
    //if there are no open tags of this type, open one
    if (eval(v)%2 == 0) {
         document.getElementById(name).value = newbut;
        txt.value = (txt.value).substring(0, txt.selectionStart) + tagadd + (txt.value).substring(txt.selectionEnd, txt.textLength);
        txt.focus();

    //otherwise, close the tag
    } else {
        document.getElementById(name).value = oldbut;
        txt.value = (txt.value).substring(0, txt.selectionStart) + tagclose + (txt.value).substring(txt.selectionEnd, txt.textLength);
        txt.focus();
    }
    //same as with ie
    eval(v+"++;");
    }
}
}
//handles font size and color
function font(bbopen, bbclose) {
        var txt = window.document.posting.post;
        //simply add it on to the end of the form
        txt.value += bbopen + bbclose;
        txt.focus();
        return;
}

//a little help text line underneath the bbcode buttons detailing their syntax, et cetera. (phpbb style)
bold_help = "Bold text: [b]text[/b]";
italic_help = "Italic text: [i]text[/i]";
underline_help = "Underline text: [u]text[/u]";
strikethrough_help = "Strikethrough: [s]text[/s]";
center_help = "Center Text: [center]text[/center]";
quote_help = "Quote text: [quote]text[/quote] or [quote=name]text[/quote]";
img_help = "Insert image: [img]http://image_url[/img]";
url_help = "Insert URL: [url]http://url[/url] or [url=http://url]URL text[/url]";
youtube_help = "Embed Youtube Video: [youtube]http://youtube.com/watch?v=video_id[/youtube]";
fontcolor_help = "Font color: [color=red]text[/color]  Tip: you can also use color=#FF0000";
fontsize_help = "Font size: [size=7]small text[/size]";

function helpline(help) {
        var helpbox = document.getElementById('helpbox');
        helpbox.value = eval(help + "_help");
}

Tämä on siis BBcode toiminto. Tämä vaatii, että viesti nimisessä textareassa on värjätty jotain tekstiä jonka ympärille tämä sitten muodostaa halutut tagit.

<input type="button" class="button" value="Bold" id="bold" name="bold" onClick="tag('b', '[b]', 'Bold*', '[/b]', 'Bold', 'bold');">

Miten saisin tämän lisäämään tagit vaikka ei olisi mitään värjätty?
JS tiedostossa on noita määrittelyitä jossa sanotaan että lisätään tagit värjätyn tekstin ympärille. En vain tiedä, miten muutan sitä.

MIB [06.05.2009 19:40:54]

#

Eikö kukaan tiedä? :/ Tarvitsisin tätä nopeasti. :s

Metabolix [06.05.2009 19:46:19]

#

Jos et sattunut huomaamaan, se kyllä lisää jo nyt tagit: ensimmäisellä klikkauksella avaustagin ja toisella sulkutagin.

Teuro [06.05.2009 20:04:37]

#

Kysytäänpä toisin, miten haluat tuon toimivan? Klikkaamalla nappia, jolloin kenttään ilmaantuu maagisesti esim <ul></ul> tagit? Silloin vaikka näin sovella jos mahdollista.

function insertTag(tagi, id){
	vanhaSisalto = document.getElementById(id).value;

	uusiSisalto = vanhaSisalto + ' ' + '<' + tagi + '>' + ' ' + '</' + tagi + '>';

	document.getElementById(id).value = uusiSisalto;
}

EDIT: Taitaa tuo lisätä sen itse asiassa jo nyttenkin, joten turha pätkä.

MIB [06.05.2009 21:26:24]

#

En tiedä miten saatte nämä lisäämään yhdestä klickauksesta, mutta minulla ei toimi. :o

Metabolix [06.05.2009 21:29:17]

#

Ihan suoraan kopioin tuon koodin ja nappulan ja lisäsin formin:

<form name="viesti"><textarea name="post"></textarea></form>

"Eikö kukaan tiedä? Tarvitsen tämän nythetimulleilmaiseksi!" ei ole oikea lähtökohta. Ohjelmointiputkassa on oikein hyvä JS-opas, voisit yrittää senkin kanssa kahlata asiassa eteenpäin.

Teuro [06.05.2009 21:47:05]

#

MIB kirjoitti:

En tiedä miten saatte nämä lisäämään yhdestä klickauksesta, mutta minulla ei toimi. :o

Toi meikäläisen pätkä ainakin lisää tuon annetun tagin ja lopputagin sille ihan hienosti. Nappulan onClick eventtiin vain kutsu tagin nimellä ja tekstiarean id:ä, niin toimii ihan hienosti.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta