Visualizzazione risultati 1 fino 10 di 10

Discussione: [Javascript] Inserire testo fra testo selezionato

  1. #1
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito [Javascript] Inserire testo fra testo selezionato

    Salve,

    Forse il titolo è poco informativo, ma non ho trovato un titolo più informativo di questo.

    Cmq, sto aggiornando, sul mio sito, il guestbook e il modulo per inviare un messaggio, dove sto mettendo una barra per inserire il bb-code, quasi come quella di AlterVista ( non so se avete presente )

    Il problema ora si fa nel problema di inserimento del bb-code.

    Bhe... Premetto che questo lo so fare, ma solamente se il bb-code deve essere inserito alla fine del testo.

    Ora, ho visto, qui su AlterVista, che i tag, del bb-code, non vengono inseriti alla fine del testo, ma nel punto, del testo, in qui ai lasciato il cursore per l'ultima volta, e alle due estremità del testo selezionato ( non so se mi sono spiegato ).

    Come è possibile fare ciò?

    Sevenjeak
    Software developer and much more

  2. #2
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Devi usare document.getElementById(id).selectionStart e document.getElementById(id).selectionEnd per Firefox, ecc... e per IE document.selection, ecc...
    Studiati lo script javascript di questa pagina andreafallico.altervista.org/files/bbcode-smilies.html

  3. #3
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Ok, ho provato a fare questo codice:

    Codice HTML:
      function addBBCode()
      {
         var element = document.getElementById("comment");
    	 
    	 if (element.selectionStart) {
    	    var start = element.selectionStart;
    		var end = element.selectionEnd;
    		
    		element.value = element.value.substring(0, start) + "[B][/B]" + element.value.substring(end);
    	 }
      }
    Effettivamente questo codice, mi inserisce, nel punto desiderato, del testo [ B ][ / B ] ( senza spassi ).

    Purtroppo non riesco a capire il resto, da quello che vedo far riferimento a window.self e window.opened, ma queste non servono a far riferimento ad una nuova finestra? io non dovrei far riferimento ad altre finestra, ma dovrei usare solo una finestra.

    Sevenjeak
    Software developer and much more

  4. #4
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Io l'ho fatto così:
    Codice:
    function addBBcode(str){
    	var element = document.getElementById('comment');
    	if(element.selectionStart){
    		var start = element.selectionStart;
    		var end = element.selectionEnd;
    		element.value = element.value.substring(0, start) + str.replace('%s', element.value.substring(start, end)) + element.value.substring(end);
    	}
    }
    e poi la funzione la chiami così:
    Codice HTML:
    <a onclick="addBBcode('[i]%s[/i]');">[i]testo[/i]</a>
    <a onclick="addBBcode('[u]%s[/u]');">[u]testo[/u]</a>
    <a onclick="addBBcode('[b]%s[/b]');">[b]testo[/b]</a>
    Ultima modifica di andreafallico : 06-12-2010 alle ore 20.18.52

  5. #5
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Infatti cosi funzione, grazie.

    EDIT:

    Il codice non funziona se mi trovo all'inizio del testo e se sottolineo tutto il testo ( che credo sia la stessa cosa ), come mai?
    Ultima modifica di sevenjeak : 06-12-2010 alle ore 20.55.43

    Sevenjeak
    Software developer and much more

  6. #6
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Così funziona:
    Codice:
    function addBBcode(str){
    	var element = document.getElementById('comment');
    	if(element.selectionStart != null){
    		var start = element.selectionStart;
    		var end = element.selectionEnd;
    		if(element.value.length == end - start)
    			element.value = str.replace('%s', element.value);
    		else
    			element.value = element.value.substring(0, start) + str.replace('%s', element.value.substring(start, end)) + element.value.substring(end);
    	}
    }
    Fai tutte le prove possibili e poi mi dici se c'è da sistemare ancora.
    Ultima modifica di andreafallico : 07-12-2010 alle ore 16.53.09

  7. #7
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Il codice funziona solamente se levo la if finale, in questo modo:

    Codice HTML:
    function addBBcode(str){
    	var element = document.getElementById('comment');
    	if(element.selectionStart != null){
    		var start = element.selectionStart;
    		var end = element.selectionEnd;
    
    	        element.value = element.value.substring(0, start) + str.replace('%s', element.value.substring(start, end)) + element.value.substring(end);
             }
    }
    Ultima modifica di sevenjeak : 07-12-2010 alle ore 16.12.35

    Sevenjeak
    Software developer and much more

  8. #8
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Funziona anche se non metti l'if, perchè
    Codice:
    element.value = element.value.substring(0, 0) + str.replace('%s', element.value.substring(0, length)) + element.value.substring(length);
    nel caso selezionato tutto il testo.

  9. #9
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito



    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  10. #10
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Citazione Originalmente inviato da andreafallico Visualizza messaggio
    Funziona anche se non metti l'if, perchè
    Codice:
    element.value = element.value.substring(0, 0) + str.replace('%s', element.value.substring(0, length)) + element.value.substring(length);
    nel caso selezionato tutto il testo.
    Non so, come hai scritto te non funziona, funziona solamente se tolgo quella if, funziona anche nel caso seleziono tutto.

    Cmq, non saprei, lo provato solo con chrome, ora vedo se funziona anche negli altri.

    saitfainder, sto leggendo il tuo articolo, ti farò sapere.
    Ultima modifica di sevenjeak : 07-12-2010 alle ore 17.20.18

    Sevenjeak
    Software developer and much more

Regole di scrittura

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