Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Editor per Textarea semplice semplice

    Ciao a tutti... avendo bisogno di un editor semplice semplice (B,I,U) per una textarea pensavo di farmelo, ed ho trovato e modificato un po sto codice:

    Codice PHP:
    function formatta(el,tag){
     var 
    selectedText document.selection?document.selection.createRange().text:el.value.substring(el.selectionStart,el.selectionEnd);
     if(
    selectedText!=''){
      var 
    newText='['+tag+']'+selectedText+'[/'+tag+']';
      
    el.value=el.value.replace(selectedText,newText)
     }

    Funziona, ma ha come difetto (enorme) di sostituire il testo non selezionato, ma la prima occorrenza. Es:

    Se io ho la frase
    codice:
    prova di una prova
    e seleziono la 2° occorrenza di prova e clicco B il tag viene associato alla prima occorrenza di prova.
    Qualcuno sa aiutarmi a risolvere il problema?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova a documenti qui
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    scusa ma se analizzi quello che fa il codice l' errore e' marchiano:
    con createRange o selectionStart/End ti stai procurando solo una stringa (avresti lo stesso risultato se la definissi direttamente tu)
    quando vai a rimpiazzare questa stringa non esiste piu' nessuna relazione tra essa e il testo selezionato
    e ovviamente solo la prima occorrenza verra' rimpiazzata

    ora non trovo una discussione maggiormente pertinente,
    ma nel frattempo prendi spunto da questa

    ciao

  4. #4
    Si si, ma l'errore l'avevo capito dov'era... ed avevo anche capito che è stupido, ma non trovo il sistema di mantenere la relazione... non conosco bene quei metodi. E mi sembra che quello che mi hai mandato non mi aiuti molto, ma forse non ho capito io.
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da rinosan_76bis
    mi sembra che quello che mi hai mandato non mi aiuti molto
    se cambi
    rng.text=sml;
    con
    rng.text='['+tag+']'+rng.text+'[/'+tag+']';
    e
    obj.value=obj.value.substring(0,from)+sml+obj.valu e.substring(to,lng)
    con
    obj.value=obj.value.substring(0,from)+'['+tag+']'+obj.value.substring(from,to)+'[/'+tag+']'+obj.value.substring(to,lng)
    non hai praticamente ottenuto quello che volevi?

  6. #6
    Ora lo provo, ma questo codice non agisce sulla fine del testo?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  7. #7
    Devo ammettere che funziona, ma allora non ho capito come. e mi chiedo: l'ultimo else come lo modifico? ora non è giusto vero?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  8. #8
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    con l' ultimo else intendi questo
    else obj.value+=sml
    ?
    fai una cosa del genere
    else obj.value+=' ['+tag+']testo da formattare[/'+tag+']'

  9. #9
    Si... ma scusa (oggi sono rinco!)
    Ma quello che tu hai indicato come "Testo da formattare", che equivale alla selezione nella textarea, come la tiro fuori?

    Ora il codice è:

    codice:
    function formatta(el,tag){
     var obj=document.getElementById(el);
     if (document.all) {
      obj.focus();
      var sel=document.selection;
      var rng=sel.createRange();
      rng.colapse;
      rng.text='['+tag+']'+rng.text+'[/'+tag+']';
     } else if(obj.selectionEnd){
      var lng=obj.textLength;
      var from=obj.selectionStart;
      var to=obj.selectionEnd;
      obj.value=obj.value.substring(0,from)+'['+tag+']'+obj.value.substring(from,to)+'[/'+tag+']'+obj.value.substring(to,lng);
     }else obj.value+=sml;
      obj.focus();
    }
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  10. #10
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    e non lo tiri fuori!
    se arriva a quell' else vuol dire che non puo' gestire quanto selezionato ne' la sua posizione
    per cui accodi un testo qualsiasi, formattato, a fine contenuto,
    sempre se per te questo costituisce un beneficio per la user experience (per me lo e', perche' l' utente capisce come funziona la formattazione e puo' copia/incollare dove serve e cambiare manualmente questo testo di default)
    alrtimenti richiama un alert che spiega che il browser in uso non supporta questa funzionalita'

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.