Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Povratak kursora posle boldiranja teksta

[es] :: Javascript i AJAX :: Povratak kursora posle boldiranja teksta

[ Pregleda: 508 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pakito
Paun Es Durlic
kustos etnolog (u penziji!) i programer
naivac
Majdanpek * Pančevo

Član broj: 91953
Poruke: 273
*.dynamic.isp.telekom.rs.

Sajt: www.PaunDurlic.com


+3 Profil

icon Povratak kursora posle boldiranja teksta10.01.2021. u 15:12 - pre 39 meseci
Treba da boldiranim vokalom označim mesto akcenta oko 11000 vlaških fraza!
Pošto ne postoji regularna fnkcija za boldiranje jednog karaktera u stringu, nalegao sam na doterivanje i modifikovanje nekih funkcija koje sam nešto zatekao gotovim, a nešto sam, ili uz pomoć prijateelja na ES doterao i prilagodio svojim potrebama, i u tome konačno uspeo. Postavim kuros ispred vokala na koji pada akcenat, i sa alt+q ga boldiram. Ali, pritom gubim kursor! Prilažem sve što je, mislim, neophodno da mi neko doda (pretpostavljam) red ili dva u javascriptu da mi posle boldiranja ponovi izroni kursor koji ću moći slobodno strelicama na tastaturi da pokrećem po tekstu, do sledećeg mesta za boldiranje.

Primer editora koji mi znatno uzbrazava obradu teksta okačio sam ovde:
http://www.paundurlic.com/vlaski.recnik/js-editor.php

/* deo koda kojim ubacujem dugme bold u gonji rededitora, sa Id=“boldp“ preko koga makroom pokrećem odrđenu funckiju */
Code:
document.write('          <img alt="boldubaci" id="boldp" title="boldubaci" class="butClass" src="'+this.wysiwyg_path+'/vlcod/boldp.png" onClick="'+this.instance_name+'.insertMyTextBOLD(\'\<b>\',\'\')">');


/* makro kojim preisitujem da li je priisnuta kombinacija tastera alt+q */
Code:
if (evt.altKey && evt.keyCode==81) //alt+q
{     
    document.getElementById("boldp").click();
}


/* funkcija kojom umećem tagove <b> ispred i </b> iza određenog karaktera u stringu na poziciji kursora */
Code:
WYSIWYG_Editor.prototype.insertMyTextBOLD = function (text, textarea) {

    var znak = '%'; //text;   
    var znak2 = '#';  
    textarea=document.getElementById(this.wysiwyg_content).contentWindow;
   var sel = textarea.getSelection();      
     var range = sel.getRangeAt(0);
     sel.removeAllRanges();                  
     range.deleteContents();                 
     var container = range.startContainer;      
     var pos = range.startOffset;    
     if (container == "[object Text]"){
          container.insertData(pos, znak);
          container.insertData(pos+2, znak2);
          
        var text = document.getElementById(this.wysiwyg_content).contentWindow.document.body.innerHTML;       
       var text1 = text.replace(/%/g,'<b>');
       var text1 = text1.replace(/#/g,'</b>'); 
        this.insertMyText1(text1,'');
      /* ovde mi se kursor gubi i mora na sledeće mesto da ga ubacim misom*/

        }
        else {
          var textnod = document.createTextNode(znak);
          range.insertNode(textnod);
        }
         
     range=document.createRange();
     range.setEnd(container, pos+znak.length-1);
    range.setStart(container, pos+znak.length-1);
     sel.removeAllRanges();
     sel.addRange(range);
     document.getElementById(this.wysiwyg_content).contentWindow.focus();
     document.getElementById(this.wysiwyg_content).focus();   
 
}


/* funkija koja ubacuje tagove za boldiranje u skriveni tekst editora */
Code:
WYSIWYG_Editor.prototype.insertMyText1 = function (text, textarea) {

    var znak = text;       
    document.getElementById(this.wysiwyg_content).contentWindow.document.body.innerHTML = znak;      
    document.getElementById(this.wysiwyg_content).focus();
}


Ceo editor se može skinuti sa mog servera:
https://www.paundurlic.com/download/editor-boldiranje.zip

[Ovu poruku je menjao pakito dana 10.01.2021. u 16:32 GMT+1]
 
Odgovor na temu

[es] :: Javascript i AJAX :: Povratak kursora posle boldiranja teksta

[ Pregleda: 508 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.