• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Obliczanie długości zaznaczonego i skasowanego przez użytkownika tekstu.

Object Storage Arubacloud
0 głosów
261 wizyt
pytanie zadane 5 września 2018 w JavaScript przez BetBet Użytkownik (550 p.)
Witam,
W jaki sposób mogę uzyskać dostęp do tego co zaznaczył użytkownik w celu policzenia długości tego co zaznaczył?

2 odpowiedzi

0 głosów
odpowiedź 5 września 2018 przez pablop76 VIP (123,120 p.)

Sprawdź getSelection()

komentarz 6 września 2018 przez pablop76 VIP (123,120 p.)
<p>
Witam,
W jaki sposób mogę uzyskać dostęp do tego co zaznaczył użytkownik w celu policzenia długości tego co zaznaczył? 
</p>
<div id="score">
  Zaznaczony tekst to:<br>
  Jego długość wynosi: 0
</div>
document.addEventListener('mouseup',function(){
  var selObj = window.getSelection(); 
   var selRange = selObj.getRangeAt(0);
  var selection = selRange.toString()
   var count = selRange.endOffset - selRange.startOffset;
   var score = document.getElementById('score');
   score.innerHTML = 'Zaznaczony tekst to: ' + selection +' <br>'  +   'Jego długość wynosi: ' + count;
});

 

0 głosów
odpowiedź 5 września 2018 przez BetBet Użytkownik (550 p.)
edycja 5 września 2018 przez BetBet

Dobra, rozwiązanie było wiele prostsze, wystarczyło dodać setTimeout() z jakąś niezauważalną dla okoa wartością, żeby js poczekał z odczytem wartości.

Jeśli ktoś trafi na temat zostawiam rozwiązanie - funkcja podpowiadająca ile użytkownikowi zostało liter do wpisania.

 

this.charsLeft = function (classOrIDTextElement, classOrIDContainerForNumber, maxLength, message = ': letters left', messageForOne = ': letter left') {
    setTimeout(function () {
        let strLength = $(classOrIDTextElement).val().length;
        if (strLength <= (maxLength - 2)) {
            $(classOrIDContainerForNumber).html(maxLength - strLength + message);
        } else if (strLength === (maxLength - 1)) {
            $(classOrIDContainerForNumber).html(maxLength - strLength + messageForOne);
        } else {
            $(classOrIDContainerForNumber).html(strLength - strLength + messageForOne);
        }
    }, 100);

    $(classOrIDTextElement).on('keydown', function (e) {
        setTimeout(function () {
            let strLength = $(classOrIDTextElement).val().length;
            let charsLeft = maxLength - strLength;
            if (e.keyCode === 8) {
                if (strLength === -1) {
                    //do nothing
                } else {
                    if (strLength <= (maxLength - 2)) {
                        $(classOrIDContainerForNumber).html(charsLeft++ + message);
                    } else if (strLength === (maxLength - 1)) {
                        $(classOrIDContainerForNumber).html(charsLeft++ + messageForOne);
                    } else {
                        $(classOrIDContainerForNumber).html(charsLeft++ + messageForOne);
                    }
                }
            }
        }, 100);

    });
};

 

komentarz 5 września 2018 przez ScriptyChris Mędrzec (190,190 p.)

Skorzystanie z setTimeout raczej nie jest rozwiązaniem problemu. Pokaż kod, doradzimy jak to zrobić lepiej.

komentarz 5 września 2018 przez BetBet Użytkownik (550 p.)
proszę, edytowałem i wkleiłem wyżej

Podobne pytania

0 głosów
1 odpowiedź 144 wizyt
pytanie zadane 19 czerwca 2023 w JavaScript przez pj-1024 Użytkownik (670 p.)
0 głosów
2 odpowiedzi 163 wizyt
pytanie zadane 6 sierpnia 2018 w JavaScript przez MrxCI Dyskutant (8,260 p.)
+2 głosów
1 odpowiedź 420 wizyt
pytanie zadane 1 maja 2016 w JavaScript przez Ivan Maniak (60,650 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...