Visualizzazione risultati 1 fino 17 di 17

Discussione: Selezionare testo BBcode

  1. #1
    Guest

    Predefinito Selezionare testo BBcode

    Ho un codice che mette nel textarea i tag di formattazione B /B, funziona ma i tag li mette alla fine del testo che seleziono.
    Come faccio quando seleziono e clicco a farli andare uno davanti e uno dietro il testo? Proprio come in questo forum.

    ...onclick="document.mioform1.messaggio.value+='B /B'"></a>
    Ultima modifica di photoman : 28-06-2007 alle ore 15.31.21

  2. #2
    Guest

    Predefinito

    Non è semplice.
    Ci sono degli editor già predisposti che lo fanno, come, appunto, quello di questo forum, ma anche di altri.

    Posso consigliarti il mio deBBeditor, è quanto risulta dai miei studi su questo argomento, ed è abbastanza semplificato: http://debug.altervista.org/dex.php?id=10
    Studiati in particolare la funzione insert_tag nel file editor.js


    Ciaoooo!!!!!

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da debug
    Non è semplice.
    Ci sono degli editor già predisposti che lo fanno, come, appunto, quello di questo forum, ma anche di altri.

    Posso consigliarti il mio deBBeditor, è quanto risulta dai miei studi su questo argomento, ed è abbastanza semplificato: http://debug.altervista.org/dex.php?id=10
    Studiati in particolare la funzione insert_tag nel file editor.js


    Ciaoooo!!!!!
    Ho visto il tuo è completo e bello, per il mio uso www.photoman.altervista.org/scrivimi1.php è troppo.
    Io ho già uno script che ho scaricato ma ne manca un pezzo:

    Codice:
    <script language="JavaScript">
     function formatta(sml) {
    	var obj=document.mioform1.messaggio;
    	if (document.all) {
    		obj.focus();
    	  	var sel=document.selection;
    	  	var rng=sel.createRange();
    	  	rng.colapse;
    	  	rng.text=sml;
    	} 
    	else if(obj.selectionEnd){
    		var lng=obj.textLength;
    		var from=obj.selectionStart;
    		var to=obj.selectionEnd;
    		obj.value=obj.value.substring(0,from)+sml+obj.value.substring(to,lng)
    	} 
    	else obj.value+=sml;
    	obj.focus();
    }
    </script>
    mi da errore quando seleziono una parte "sml non è definito".
    Oltre al codice sopra, nel textarea ho questo:
    Codice:
    ...onselect="formatta(sml);"...
    EDIT: Sto studiando il tuo codice non riesco a trovare dove viene definito
    ...
    function insert_tag(codice,argomento2){
    ...

    che è poi il problema del mio codice
    Ultima modifica di debug : 28-06-2007 alle ore 18.18.10

  4. #4
    Guest

    Predefinito

    Ciò che hai fatto tu non è adatto a fare ciò che vuoi, perchè non riesce a funzionare al di fuori di IE.
    La funzione che uso io passa quei valori quando è richiamata, vatti a vedere dove viene richiamata e guarda di cosa si tratta.

    Ammetto che 'argomento2' non è proprio il massimo come chiarezza :P Pardon!


    Ciaoooo!!!!!

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da debug
    Ciò che hai fatto tu non è adatto a fare ciò che vuoi, perchè non riesce a funzionare al di fuori di IE.
    La funzione che uso io passa quei valori quando è richiamata, vatti a vedere dove viene richiamata e guarda di cosa si tratta.

    Ammetto che 'argomento2' non è proprio il massimo come chiarezza :P Pardon!


    Ciaoooo!!!!!
    Sto cercando di capire ma per me è un codice un po complicato, a me basta solamente un piccolo script per IE e FF che al click del pulsante-immagine mi mette i 2 tag nel posto giusto. Il file php è già a posto

  6. #6
    Guest

    Predefinito

    E infatti io sto parlando proprio di quello!
    E' necessario tutto quel papocchio che hai di fronte per fare ciò che chiedi, purtroppo.

    Dov'è che ti blocchi?
    Cmq, se per te è più facile, applica soltanto la funzione js, e poi modifichi (se non va bene) il parser php come ti serve.


    Ciaoo!!!!!

  7. #7
    Guest

    Predefinito

    Ho gia il mio script abbastanza capibile che poi vedrò di adattare anche a "seleziona colore" solo che non riconosce quel "sml", chi l'ha fatto non mi risponde

  8. #8
    Guest

    Predefinito

    sml penso stia per smile, quando richiami la funzione devi passargli, al posto di 'sml', il 'codice' o, meglio, il tag dello smile o di quello che è.
    Quindi, ad esempio: onchange="formatta('[b]')"

    Ti consiglio però di non mischiare due o più script diversi, si crea solo confusione (e ne stai avendo prova).


    Ciaooo!!!!!!
    Ultima modifica di debug : 28-06-2007 alle ore 19.24.52

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da debug
    sml penso stia per smile, quando richiami la funzione devi passargli, al posto di 'sml', il 'codice' o, meglio, il tag dello smile o di quello che è.
    Quindi, ad esempio: onchange="formatta('[b]')"

    Ti consiglio però di non mischiare due o più script diversi, si crea solo confusione (e ne stai avendo prova).


    Ciaooo!!!!!!
    Non mischio i codici, ora ho riportato tutto come originale, però non ho "onchange"

  10. #10
    Guest

    Predefinito

    Posta l'originale allora, sia la funzione che il richiamo di questa.


    Ciaoo!!!

  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da debug
    Posta l'originale allora, sia la funzione che il richiamo di questa.


    Ciaoo!!!
    Codice originale:

    Codice:
    <script language="JavaScript">
     function formatta(sml) {
    	var obj=document.mioform1.messaggio;
    	 obj.focus();
    	if (document.all) { // --- > IE
    		var sel=document.selection;
    	  	var rng=sel.createRange();
    			rng.colapse;
    	  	rng.text=sml;
    	} 
    	else if(obj.selectionEnd){
    		var lng=obj.textLength;
    		var from=obj.selectionStart;
    		var to=obj.selectionEnd;
    		obj.value=obj.value.substring(0,from)+sml+obj.value.substring(to,lng)
    	} 
    	else obj.value+=sml;
    	obj.focus();
    }
    </script>

    nel form:

    Codice:
    <a href="#" onclick="MOver('Img1')" onmouseout = "MOut('Img1')">            
    <img src="faccine/bold.gif" name="Img1" border="0" onclick="document.mioform1.messaggio.value+='B /B'"></a>
    Textarea:

    Codice:
    ...onselect="formatta(sml);" ...
    Ultima modifica di photoman : 28-06-2007 alle ore 19.37.41

  12. #12
    Guest

    Predefinito

    Che casino!
    E' del tutto sballato, non saprei dove mettere mano, ma in ogni caso lo modificherei fino a farlo diventare come il mio, quindi tanto vale prenderlo già bello che fatto e farci le modifiche che ritieni opportune, no??


    Ciaoo!!

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da debug
    Che casino!
    E' del tutto sballato, non saprei dove mettere mano, ma in ogni caso lo modificherei fino a farlo diventare come il mio, quindi tanto vale prenderlo già bello che fatto e farci le modifiche che ritieni opportune, no??


    Ciaoo!!
    Si lo posso anche fare, se mi posti lo script ed i richiami dove van messi in base al mio, lo posso fare. Ma solo il necessario...poi una volta a posto vedrò per i colori select

  14. #14
    Guest

    Predefinito

    Guarda è più semplice di quello che credi, basta che prendi la funzione js insert_tag e i richiami che vedi applicati ai vari pulsanti per il Bold, Italic, ecc. e il gioco è fatto.
    Ciò che è superfluo non è necessario cancellarlo perchè non da fastidio.

    Devi solo modificare i vari nomi dei campi, ad esempio la textarea.

    Se hai problemi nella personalizzazione chiedi pure.


    Ciaooo!!!!!

  15. #15
    Guest

    Predefinito

    Citazione Originalmente inviato da debug
    Guarda è più semplice di quello che credi, basta che prendi la funzione js insert_tag e i richiami che vedi applicati ai vari pulsanti per il Bold, Italic, ecc. e il gioco è fatto.
    Ciò che è superfluo non è necessario cancellarlo perchè non da fastidio.

    Devi solo modificare i vari nomi dei campi, ad esempio la textarea.

    Se hai problemi nella personalizzazione chiedi pure.


    Ciaooo!!!!!
    Ovviamente qualcosa non va, ho copiato la funzione e ho modificato la parte in rosso
    function insert_tag(codice,argomento2){
    var tarea=document.editor.testo;
    ...
    tarea.focus();
    }
    </script>

    il richiamo l'ho messo cosi:

    <a href="#" onmouseover="MOver('Img1')" onclick="MClick('Img1')" onmouseout = "MOut('Img1')">
    <a href="javascript:insert_tag('B');" onfocus="blur();"><img src="faccine/bold.gif" name="Img1" border="0" onclick="document.mioform1.messaggio.value+=''"></a>

    Nel textarea:

    ...onselect="insert_tag('[B]');"...


    EDIT:
    Dopo vari tentativi funziona (la formattazione) ma solo co FF, con IE7 e Opera no, non mette i tag al posto giusto.
    Ultima modifica di seneca : 29-06-2007 alle ore 00.14.11

  16. #16
    Guest

    Predefinito

    Se vedi bene, nel mio editor non c'è nessun evento nella textarea!
    Eè per questo che ti ho detto di vedere come ho fatto a richiamare la funzione js ;)
    Togli anche l'onclick dal tag img e tutti gli altri comportamenti dal link antecedente il pulsante (che tra l'altro nemmeno chiudi con </a>).


    Ciaooo!!!!!

  17. #17
    Guest

    Predefinito

    Citazione Originalmente inviato da debug
    Se vedi bene, nel mio editor non c'è nessun evento nella textarea!
    Eè per questo che ti ho detto di vedere come ho fatto a richiamare la funzione js ;)
    Togli anche l'onclick dal tag img e tutti gli altri comportamenti dal link antecedente il pulsante (che tra l'altro nemmeno chiudi con </a>).


    Ciaooo!!!!!
    La formattazione sembra a posto, ho ancora 2 cose riguardo i colori:

    1.Con FF non si colorano quando sono nella casellina
    2. con tutti e 3 i browser quando seleziono un colore e ci metto dentro il testo, poi la tendina non si resetta con COLOR ma rimane il nome del colore che avevo selezionato.

    Codice:

    Codice:
    <select onchange="javascript:insert_tag('COLOR',this.options[this.selectedIndex].value);" class="campoColori">
    <option value="black">COLOR</option>
    <option value="turchese" class="turchese-color" >Turchese</option>
    <option value="rosso" class="rosso-color" >Rosso</option>
    <option value="verde" class="verde-color" >Verde</option>
    <option value="grigio" class="grigio-color" >Grigio</option>
    <option value="nero" class="nero-color" >Nero</option> 
    </select>
    Nella pagina php:


    Codice PHP:
    //Colora il testo selezionato
    $messaggio = str_replace("","<font color=#0000ff>",$messaggio);
    $messaggio = str_replace("[COLOR=rosso]","<font color=\"red\">",$messaggio);
    $messaggio = str_replace("[COLOR=verde]","<font color=\"green\">",$messaggio);
    $messaggio = str_replace("[COLOR=grigio]","<font color=\"gray\">",$messaggio);
    $messaggio = str_replace("[COLOR=nero]","<font color=\"black\">",$messaggio);
    $messaggio = str_replace("","</font>",$messaggio);


    EDIT:
    Non riesco a trovare la funzione
    Codice:
    onfocus="blur();"
    , dove l'hai messa?
    Ultima modifica di seneca : 30-06-2007 alle ore 21.21.11

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •