• User Attivo

    Problema con jQuery

    Salve a tutti, sto avendo dei problemi con jQuerypp, un plugin che, tra le altre cose, aggiunge una funzione .selection(), che permette di maneggiare senza problemi il testo selezionato.

    Quando si chiama su un'elemento, quello che risulta è {start, end, width}.

    Quello che a me interessa è il punto di start e di end, poichè sto realizzando una specie di wysiwyg.
    Ho fatto diverse prove. Inizialmente, facendo un semplice copia ed incolla dalla pagina di spiegazione (donejs.com/docs.html#!jQuery.selection) ho notato che fintanto che è un textarea funziona benissimo, quando arriva un elemento qualsiasi che abbia contenteditable='true' mi dava errore.
    Allora ho cercato su internet e lo stesso medesimo codice funziona se lo inserisco in un keyup event, mentre se lo inglobo in una funzione onclick (su un link sopra) mi da l'errore "Uncaught TypeError: Cannot read property 'start' of null".

    Codice:

    function addBBCodeUno(str,id)
              {
    //[...]
                 var selection = $('#desc2').selection(),
            text = $('#desc2').text().substring(selection.start, selection.end);
                console.log(text);
    //[...]
    } // Non funziona
    //[...]
    $('#desc2').on('mouseup', function() {
        var selection = $('#desc2').selection(),
            text = $('#desc2').text().substring(selection.start, selection.end);
        console.log(text);
    }); //funziona
    
    
    

    Sapete delucidarmi? Ah, la funzione addBBcodeuno la chiama da così:

    $('.magicbutton.uno').click(function(){
                    var id = $(this).parent().attr("magic_id"); //per sapere quale campo deve modificare
                    var azione = $(this).attr("magic"); // cosa deve fare
                    addBBCodeUno(azione,id);
                });
    
    

    Grazie!

    EDIT:
    Ho appena provato a semplificare il codice togliendo la funzione, ora è così:

    $('.magicbutton.uno').click(function(){
    				var id = $(this).parent().attr("magic_id");
    				var azione = $(this).attr("magic");
    				var selection = $("#"+id).selection(),
            			text = $("#"+id).text().substring(selection.start, selection.end);
    				console.log(text);
    			});
    

    Ed ancora non funziona con il div, ma funziona con il textarea...