]> git.mxchange.org Git - friendica.git/commitdiff
Put cursor at end of default mentions in comment box
authorHypolite Petovan <hypolite@mrpetovan.com>
Tue, 29 Jan 2019 14:25:22 +0000 (09:25 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Tue, 29 Jan 2019 14:25:22 +0000 (09:25 -0500)
view/templates/head.tpl
view/theme/frio/js/textedit.js

index 8631d76093b668536d33302fa59814f8816f1c51..64af0a3a56a8e3eabf5249476caa6d1d8495b2ef 100644 (file)
 <script type="text/javascript" src="view/js/main.js" ></script>
 <script>
 
-       var updateInterval = {{$update_interval}};
+       // Lifted from https://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/
+    jQuery.fn.putCursorAtEnd = function() {
+        return this.each(function() {
+            // Cache references
+            var $el = $(this),
+                el = this;
+
+            // Only focus if input isn't already
+            if (!$el.is(":focus")) {
+                $el.focus();
+            }
+
+            // If this function exists... (IE 9+)
+            if (el.setSelectionRange) {
+                // Double the length because Opera is inconsistent about whether a carriage return is one character or two.
+                var len = $el.val().length * 2;
+
+                // Timeout seems to be required for Blink
+                setTimeout(function() {
+                    el.setSelectionRange(len, len);
+                }, 1);
+            } else {
+                // As a fallback, replace the contents with itself
+                // Doesn't work in Chrome, but Chrome supports setSelectionRange
+                $el.val($el.val());
+            }
+
+            // Scroll to the bottom, in case we're in a tall textarea
+            // (Necessary for Firefox and Chrome)
+            this.scrollTop = 999999;
+        });
+    };
+
+    var updateInterval = {{$update_interval}};
        var localUser = {{if $local_user}}{{$local_user}}{{else}}false{{/if}};
 
        function confirmDelete() { return confirm("{{$delitem}}"); }
        function commentExpand(id) {
-               $("#comment-edit-text-" + id).value = "";
+               $("#comment-edit-text-" + id).putCursorAtEnd();
                $("#comment-edit-text-" + id).addClass("comment-edit-text-full");
                $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
                $("#comment-edit-text-" + id).focus();
index bf68d0f5dcb41b9c375143974e2e5d7ee572fbcb..76a04a32f2887b49913c6e80bed291184c692881 100644 (file)
@@ -2,6 +2,39 @@
  * @brief The file contains functions for text editing and commenting
  */
 
+// Lifted from https://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/
+jQuery.fn.putCursorAtEnd = function() {
+       return this.each(function() {
+               // Cache references
+               var $el = $(this),
+                       el = this;
+
+               // Only focus if input isn't already
+               if (!$el.is(":focus")) {
+                       $el.focus();
+               }
+
+               // If this function exists... (IE 9+)
+               if (el.setSelectionRange) {
+                       // Double the length because Opera is inconsistent about whether a carriage return is one character or two.
+                       var len = $el.val().length * 2;
+
+                       // Timeout seems to be required for Blink
+                       setTimeout(function() {
+                               el.setSelectionRange(len, len);
+                       }, 1);
+               } else {
+                       // As a fallback, replace the contents with itself
+                       // Doesn't work in Chrome, but Chrome supports setSelectionRange
+                       $el.val($el.val());
+               }
+
+               // Scroll to the bottom, in case we're in a tall textarea
+               // (Necessary for Firefox and Chrome)
+               this.scrollTop = 999999;
+       });
+};
+
 function commentGetLink(id, prompttext) {
        reply = prompt(prompttext);
        if(reply && reply.length) {
@@ -102,7 +135,7 @@ function cmtBbClose(id) {
 }
 
 function commentExpand(id) {
-       $("#comment-edit-text-" + id).value = '';
+       $("#comment-edit-text-" + id).putCursorAtEnd();
        $("#comment-edit-text-" + id).addClass("comment-edit-text-full");
        $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
        $("#comment-edit-text-" + id).focus();