Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne] Modyfikacja zachowania drag & drop w textarea
Forum PHP.pl > Forum > Przedszkole
Print_Screen
W edytorach tekstu mamy taką funkcję jak: przeciągnij i upuść. Powoduje ona przeniesienie zaznaczonego fragmentu w inne miejsce. Jeśli w czasie przeciągania wciśniemy Ctrl, to zamiast przeniesienia nastąpi przekopiowanie. Niestety w przeglądarkach, ta druga funkcja nie działa.

Czy da się zmusić przeglądarkę (w szczególności Google Chrome) do tego, żeby przeciągnij i upuść wykonywane w polu tekstowym powodowało kopiowanie?

Jeśli się nie da z poziomu przeglądarki, to może da się to zrobić z poziomu strony? Dałoby się opatrzyć textarea jakimś kodem np. JavaScript, który by powodował, że drag & drop w obrębie tego pola będzie kopiowało, a nie tylko przenosiło zaznaczony tekst?
!*!
Tak, pobierasz początek/koniec zaznaczenia (focus), kopiujesz treść i na podstawie nowej pozycji kursora ją wklejasz.
http://stackoverflow.com/questions/1342536...-to-end-of-text
Print_Screen
Dzięki smile.gif.

Niestety nie znam się na JavaScripcie i JQuery. Mógłbym poprosić o wstawienie odpowiedniej funkcji do poniższego prostego kodu tak, żeby następował pożądany efekt?

Kod
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="PL" />
<title>TextArea</title>
</head>
<body>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<body>
<textarea rows="15" cols="60">
</textarea>
</body>
</html>




artuross
Nie, nikt nie moglby, dlatego, ze jQuery ma tak swietna dokumentacje, ze nie znalezienie tam informacji na temat poszukiwanego przez siebie zagadnienia jest naprawde trudne.
Podpowiem, ze kiedy nastepuje drag sprawdzasz czy jest wcisniety CTRL.
Print_Screen
Cytat(artuross @ 30.03.2013, 20:50:55 ) *
Podpowiem, ze kiedy nastepuje drag sprawdzasz czy jest wcisniety CTRL.


Po co? Przecież właśnie o tym jest ten wątek, że w przeglądarkach wciśnięty Ctrl, nie powoduje, że drag&drop kopiuje.

PS. Bez JQuery nie da się tego zrobić?
artuross
Wlasnie dlatego napisalem, mozesz sam zaimplementowac taka funkcjonalonosc na swojej stronie. Mozna to zrobic bez jQuery, na vanilli, poniewaz jQuery nie oferuje nic wiecej niz czysty JavaScript.
zielu001
  1. var zaznaczone = $('textarea').getSelection();
  2.  
  3. function textareaInsertAtCursor( o, value) {
  4. // IE
  5. if (document.selection) {
  6. o.focus();
  7. var sel = document.selection.createRange();
  8. sel.text = value;
  9. sel.moveStart( 'character', -1 * value.length);
  10. sel.select();
  11. //modern browsers
  12. } else if (o.selectionStart || o.selectionStart == 0) {
  13. var startPos = o.selectionStart;
  14. var endPos = o.selectionEnd;
  15. o.value = o.value.substring(0, startPos) + value + o.value.substring(endPos);
  16. o.selectionStart = startPos;
  17. o.selectionEnd = startPos + value.length;
  18. o.focus();
  19. // else add at the end
  20. } else {
  21. o.value += value;
  22. }
  23. }
  24.  
  25.  
  26.  


To Ci powinno pomóc.. prawie gotowiec. Wystarczy sprawdzić kiedy ktoś puścił przycisk myszki i czy ma wciśniety CTRL!..
Print_Screen
Cytat(zielu001 @ 1.04.2013, 19:22:15 ) *
To Ci powinno pomóc.. prawie gotowiec. Wystarczy sprawdzić kiedy ktoś puścił przycisk myszki i czy ma wciśniety CTRL!..


Dzięki, ale ja znam tylko czysty HTML i trochę CSS, więc nie wiem za bardzo, co z tym kodem zrobić. Dlatego prosiłbym o wbudowanie w wyżej zamieszczony mój prosty kod. Wystarczy, żeby działało z Chrome (z IE nie musi) i może być z wciśniętym Ctrl lub nie - byle kopiowało zamiast przenosić.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.