Przyciski KOPIUJ

0

Witam. Dopiero co zaczyna przygodę z javascript i stąd moje pytanie (może się okazać banalne dla starszych stażem).
Tutaj to co naskrobałem https://jsbin.com/sucijoqiya/1/edit?html,js,console,output
Chodzi mi o to żeby po każdym kliknięciu w przycisk został skopiowany tekst do schowka bo jak na razie kopiuje tylko tekst z pierwszego wiersza. A potrzebuje mieć taki przycisk przy każdym wierszu. Jeśli ktoś by pomógł było by fajnie. Z góry dziękuje za odpowiedzi.

1

querySelector zwraca Ci tylko pierwszy napotkany element. Jeżeli dopiero uczysz się js'a to zapomnij, że istnieje coś takiego jak jQuery :) Przynajmniej na opczatku staraj się z niego nie korzystać.

$(document).ready(function() {
	// zwraca node list, czyli wszystkie nasze buttony z taką klasą
    var copyTextinputBtn = document.getElementsByClassName('js-textinputcopybtn'); 

    // powyzszy selektor zwraca nam node list a nie array, wiec musimy pożyczyć funkcję i iterujemy po każdym buttonie
   // równie dobrze można zrobić zwykłą pętlę for, co chyba byłoby szybsze i odwoływać się copyTextinputBtn[i]. Ja preferuję tak.
    Array.prototype.forEach.call(copyTextinputBtn, function(element) { // element to nasz button

    	element.addEventListener('click', function(event) { // dla każdego buttona dodajemy event listener

			// pod this siedzi nasz button
	        var	copyTextinput = this.previousElementSibling,
	        	successful,
	        	msg; // ze względu na hoisting dobrą praktyką jest deklarowanie wszystkich zmiennych tam gdzie i tak są automatycznie przenoszone tzn. na górze funkcji
          
	        copyTextinput.select();
	        
	        try {
	            successful = document.execCommand('copy');
	            msg = successful ? 'successful' : 'unsuccessful';
	            console.log('Copying text input command was ' + msg);
	        } catch (err) {
	            console.log('Oops, unable to copy');
	        }
	    	copyTextinput.disabled = true;
	    });

    });
});
0

Nic się kolego nie zmieniło względem mojego sposobu. Może sprecyzuje bardziej chodzi o to że ten skrypt pozwala na skopiowanie do schowka tylko jednego wiersz. Po kliknięciu na drugi przycisk nie kopiuje on wiersza tylko w schowku zostaje zawartość z wcześniej skopiowanego wiersza. Bez odświeżenia da się tylko kopiować zawartość jednego wiersza a mi potrzeba kopiować z każdego wiersza bez przeładowania strony.

0

Nic się kolego nie zmieniło względem mojego sposobu.

@safebreaker generalnie zmieniło się sporo. Twój skrypt bindował tylko jeden pierwszy button.
W tym momencie po kliknięciu kopiuje się tekst obok danego buttona. Dodatkowo po skopiowaniu blokowane jest pole z tekstem, który został skopiowany. Tak zrozumiałem.

Ty chcesz, żeby te skopiowane informacje się sumowały? Tzn po kliknięciu pierwszego w schowku masz RTV EURO AGD, a później RTV EURO AGD Warszawa Ul. Jakaś tam 35 ?

0

Nie nie mają się sumować tylko żeby można było je po kolei kopiować i wklejać na przykład przy płatności w banku.

0

@safebreaker, a czy sprawdziłeś jak działa mój kod? Jak na mój gust działa tak jakbyś chciał. Nie bardzo rozumiem po co jest disabled na końcu, ale skoro było to dałem.

Jeżeli chcesz to również dla statycznych pól jak nazwa banku, to po prostu przerób odpowiednio kod. Ogólną zasadę działa już masz, więc myśle, że dalej już sobie poradzisz.

0

Tak sprawdziłem kolego twój kod ale nie działa do końca tak jak bym chciał. Ale i tak dziękuję za fatygę. Jakoś będę musiał sobie poradzić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1