Pokaż wyniki od 1 do 1 z 1

Wątek: Automatyczne rozszerzanie "textarea", przepisywanie z JS do jQuery

  1. #1
    Aktywny
    Dołączył
    Dec 2011
    Posty
    273

    Domyślnie Automatyczne rozszerzanie "textarea", przepisywanie z JS do jQuery

    Witajcie,

    ... staram się przepisać stary kod który rozszerza automatycznie element "textarea", gdy będzie w nim wystarczająco dużo danych (pojawił się pasek) pewnie wiecie o co chodzi, więc nie muszę tłumaczyć.

    Kod w czystym JS wygląda tak:
    Kod:
    window.onload = function(){
    	var textarea = document.getElementsByTagName("textarea")[0];
    
    	var resize = function(textarea){
    		textarea.style.height = "auto";
    		textarea.style.height = (textarea.scrollHeight)+"px";
    	}
    
    	textarea.addEventListener && textarea.addEventListener("input", function(){
    		resize(textarea);
    	});
    
    	textarea['attachEvent'] && textarea.attachEvent("onkeyup", function(){
    		resize(textarea);
    	});
    }
    A to druga wersja, tym razem w jQuery:
    Kod:
    $(function(){
    	$("textarea").on({
    		keyup: function(){
    			resize($(this));
    		},
    
    		input: function(){
    			resize($(this));
    		}
    	});
    });
    
    function resize(textarea){
    	if ($(textarea).scrollTop() > 0){
    		$(textarea).css("height", $(textarea).height() + $(textarea).scrollTop());
    	}
    }
    ... druga wersja działa prawię dobrze, prawie dlatego, że:
    - gdy wpiszę wystarczająco dużo tekstu aby pojawił się pasek do przesuwania, pasek najpierw się pojawia, a potem znika i pole się powiększa, tak jakby ten pasek mruga, w czystym JS tego paska nigdy nie widać;
    - gdy skopiuję kilka znaków, potem przytrzymam CTRL+V, pole się nie powiększa, muszę puścić te dwa przyciski, w czystym JS, pole powiększa się automatycznie nawet gdy mam wciśnięte CTRL+V;
    - gdy usunę tekst, a pole już zdążyło się powiększyć, po usunięciu go, pole nie wraca do normalnej wielkości, ale to będzie trzeba coś dać w:
    Kod:
    if ($(textarea).scrollTop() > 0){
    	$(textarea).css("height", $(textarea).height() + $(textarea).scrollTop());
    } ELSE {...}
    ... chociaż nie widzę jak będę mógł odnaleźć pierwotną wielkość... chyba będzie trzeba wpisać na sztywno, a w czystym JS wszystko działa normalnie po usunięciu tekstu.

    Ehh, pewnie wiele błędów popełniłem podczas przepisywania, ale szukałem w Google jak zastąpić te elementy w JS kodem z jQuery.

    Przepisuję bo mam dość tego, że połowa jest w czystym JS, druga w jQuery, a trzecia jeszcze w czymś innym. Wiem, że jQuery jest wolne, ale to mój wybór. Tak więc, wiecie jak naprawić te wszystkie błędy, albo ogólnie poprawić kod?
    Ostatnio edytowane przez Bartek ; 27-05-2013 o 18:40

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. [jQuery] Problem z funkcją "tabs"
    Przez gadeawzuki w dziale JavaScript/AJAX
    Odpowiedzi: 1
    Ostatni post / autor: 27-05-2010, 20:22
  2. Odpowiedzi: 12
    Ostatni post / autor: 21-03-2010, 16:11
  3. Jquery "akordeon"
    Przez Speedy w dziale JavaScript/AJAX
    Odpowiedzi: 0
    Ostatni post / autor: 01-01-2010, 20:54
  4. "" Silniki gier MMO ""
    Przez elsemen w dziale Administracja
    Odpowiedzi: 2
    Ostatni post / autor: 16-05-2008, 23:32

Zakładki

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •