Forum > Software > JS - ponowne pobranie zawartości textarea

Strona 1 z 1 1
skocz

szczur3k

Wysłane 2020-02-20 14:55 , Edytowane 2020-02-20 14:55

Hej, jest tu ktoś ogarnięty w JavaScript? Głowię się nad tym pół dnia i nie mogę ugryźć.

Jest sobie textarea na stronce, w JS go sobie wczytuję z kodu stronki, zawartość jest lekko przemielona i zwracana w osobnym okienku. Ale nie mam pojęcia jak ugryźć sytuację, w której użyszkodnik zmieni coś w źródłowym polu tekstowym. Chciałbym pobrać dane nie z kodu strony ale to co on wpisał.

OK, rozumiem że na tym "źródłowym" texarea muszę odpalić jakiś event (change?), ale jak na ten event zareagować? querySelector czy inny getElementByCośtam zaciągnie mi oryginalne dane z kodu strony, nie te, które aktualnie znajdują się w polu tekstowym. Jakieś pomysły jak się do tego dobrać?

Gentoo

skatan

  • skatan
  • wiadomość Użytkownik

  • 1508 wypowiedzi

Wysłane 2020-02-20 19:40 , Edytowane 2020-02-20 19:41

https://jsfiddle.net/kuwabarahiroshi/7CsFR/




jQuery(function($) {
 var old_data;
 $('textarea').autoGrowTextArea();
 //log na wczytaniu do konsoli
 console.log('start: ' + $('#text3').val());
 //podmina zawartosci kodem
 $('#text3').val('dupa');
 //nowe dane  do konsoli warnem
 console.warn($('#text3').val());
 //zapisanie zawartości z text3  powiedzmy jak wczytujesz sobie dane
 old_data = $('#text3').val();
 // event na zmianie  ( log po kazdej zmianie zawartości textarea3 )
 $(function() {
   $('#text3').on('change keyup', function() {
     // kazde puszczenie np CTRL zadziala ale tez jak wcisniesz 2 i wiecej na raz gdy kursor wewnatrz  - akcja przy kazdym zwolnieniu
     // (analogicznie jak przytrzymasz to poleci zmiana w chwili puszczenia)
     if (old_data == $(this).val()) {
       //brak zmian
       console.log('brak zmian');
     } else {
       //jest zmiana  zapisujesz sobie nowe dane
       old_data = $(this).val();
       // warn z tymi danymi
       console.warn($(this).val());
       // mozesz sobie robić co chesz tu
     }
   })
 });
});


pytanie po co chcesz wykrywać zmiany ???
nie lepiej na jakim zapisie z zawartością coś zrobić , czy to przejściu dalej ??

szczur3k

Wysłane 2020-02-21 09:49

@skatan, w textarea jest html i ma być możliwość bez przechodzenia dalej wyświetlić ten sam tekst, ale ze znacznikami HTML podmienionymi na Markdown. Dlatego potrzebuję wykryć zmiany w textarea bez zapisu/przeładowania/cokolwiek.

Gentoo

kowgli

  • kowgli
  • wiadomość Użytkownik

  • 4358 wypowiedzi

Wysłane 2020-02-21 15:34 , Edytowane 2020-02-21 15:37

querySelector czy inny getElementByCośtam zaciągnie mi oryginalne dane z kodu strony, nie te, które aktualnie znajdują się w polu tekstowym.


Nieprawda. Poda ci to co się aktualnie znajduje w polu. 
https://jsfiddle.net/ytavqcx8/3/

JS nie ma nic do "kodu" strony. Odpowiada on jedynie za pierwsze wyrenderowanie.

We frameworkach SPA często cały kod strony to coś w stylu <div id="root" /> a całą resztę robi dynamicznie JS.
Zobacz sobie np. źródło tego:  http://react-compare-app.surge.sh/

szczur3k

Wysłane 2020-02-24 10:19

@kowgli, jak to się nazywało fachowo? Pomroczność jasna? :-D

Ogólnie pomysł miałem dobry, ale event nie ten. Dzięki za naprowadzenie.

BTW, trzeba by się zabrać w końcu za to jQuery kurde ;-)

Gentoo
Strona 1 z 1 1
skocz

Kto jest online: 0 użytkowników, 160 gości