]> wagnertech.de Git - kivitendo-erp.git/commitdiff
ClientJS: Funktion zum Setzen der Cursorposition (z.B. in textareas)
authorMoritz Bunkus <m.bunkus@linet.de>
Wed, 18 Nov 2020 10:22:25 +0000 (11:22 +0100)
committerMoritz Bunkus <m.bunkus@linet.de>
Wed, 18 Nov 2020 10:32:55 +0000 (11:32 +0100)
SL/ClientJS.pm
js/client_js.js
js/kivi.js

index 336f971441baead154ca2835c34ee9aac7905db7..7d8c362c907ed4da8a0fc9565e0d1f0bea8c448c 100644 (file)
@@ -123,6 +123,8 @@ my %supported_methods = (
   run_once_for           => 3,  # kivi.run_once_for(<TARGET>, <ARGS>)
 
   scroll_into_view       => 1,  # $(<TARGET>)[0].scrollIntoView()
+
+  set_cursor_position    => 2,  # kivi.set_cursor_position(<TARGET>, <ARGS>)
 );
 
 my %trim_target_for = map { ($_ => 1) } qw(insertAfter insertBefore appendTo prependTo);
index 9fc14b6c6e854e36cd9803e80bb991b68c920682..d231d10ca0589bad45f8c70b04a15f967b34e8be 100644 (file)
@@ -113,7 +113,7 @@ ns.eval_json_result = function(data) {
 
       // ## jQuery UI dialog plugin ##
 
-      // Opening and closing and closing a popup
+      // Opening and closing a popup
       else if (action[0] == 'dialog:open')          kivi.popup_dialog(action[1]);
       else if (action[0] == 'dialog:close')         $(action[1]).dialog('close');
 
@@ -159,6 +159,7 @@ ns.eval_json_result = function(data) {
       else if (action[0] == 'run')                  kivi.run(action[1], action.slice(2, action.length));
       else if (action[0] == 'run_once_for')         kivi.run_once_for(action[1], action[2], action[3]);
       else if (action[0] == 'scroll_into_view')     $(action[1])[0].scrollIntoView();
+      else if (action[0] == 'set_cursor_position')  kivi.set_cursor_position(action[1], action[2]);
 
       else                                          console.log('Unknown action: ' + action[0]);
 
index b2b39e180bf6c5d5b5ab7023a556fe276fdc2121..77dfe5c63ca7f8367f76a8887c28e5aab94f1bc4 100644 (file)
@@ -662,6 +662,15 @@ namespace("kivi", function(ns) {
     $input.parent().replaceWith($area);
     $area.focus();
   };
+
+  ns.set_cursor_position = function(selector, position) {
+    var $input = $(selector);
+    if (position === 'end')
+      position = $input.val().length;
+
+    $input.prop('selectionStart', position);
+    $input.prop('selectionEnd',   position);
+  };
 });
 
 kivi = namespace('kivi');