]> wagnertech.de Git - kivitendo-erp.git/commitdiff
PartPicker: Auch auf Paste-Events reagieren.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 30 May 2016 14:53:24 +0000 (16:53 +0200)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 30 May 2016 14:53:24 +0000 (16:53 +0200)
Damit wird bei eindeutigem eingefügtem Text der entsprechende Artikel
ausgewählt. Ansonsten wird der Text rot (undefined) dargestellt.

Vorher war es möglich, z.B. eine eindeutige Artikelnummer einzufügen, aber
intern war dennoch kein Artikel ausgewählt. In der Anzeige sah es aber so aus,
als sei alles in Ordnung.

js/autocomplete_part.js

index f271b8da4bce0b6058ee7b50d07d8b599609614f..0366ed270c2018e0a73a75c30c065eec9fe99686 100644 (file)
@@ -154,6 +154,27 @@ namespace('kivi', function(k){
       $('#part_selection').dialog('close');
     };
 
+    function handle_changed_text(callbacks) {
+      $.ajax({
+        url: 'controller.pl?action=Part/ajax_autocomplete',
+        dataType: "json",
+        data: $.extend( ajax_data($dummy.val()), { prefer_exact: 1 } ),
+        success: function (data) {
+          if (data.length == 1) {
+            set_item(data[0]);
+            if (callbacks && callbacks.match_one) callbacks.match_one(data[0]);
+          } else if (data.length > 1) {
+            state = STATES.UNDEFINED;
+            if (callbacks && callbacks.match_many) callbacks.match_many(data);
+          } else {
+            state = STATES.UNDEFINED;
+            if (callbacks &&callbacks.match_none) callbacks.match_none();
+          }
+          annotate_state();
+        }
+      });
+    };
+
     $dummy.autocomplete({
       source: function(req, rsp) {
         $.ajax($.extend(o, {
@@ -188,31 +209,28 @@ namespace('kivi', function(k){
         } else if (state == STATES.PICKED) {
           return true;
         }
-        if (event.which == KEY.TAB) event.preventDefault();
-        $.ajax({
-          url: 'controller.pl?action=Part/ajax_autocomplete',
-          dataType: "json",
-          data: $.extend( ajax_data($dummy.val()), { prefer_exact: 1 } ),
-          success: function (data) {
-            if (data.length == 1) {
-              set_item(data[0]);
-              if (event.which == KEY.ENTER)
-                $('#update_button').click();
-            } else if (data.length > 1) {
-             if (event.which == KEY.ENTER)
-                open_dialog();
-            } else {
-            }
-            annotate_state();
-          }
-        });
-        if (event.which == KEY.ENTER)
+        if (event.which == KEY.TAB) {
+          event.preventDefault();
+          handle_changed_text();
+        }
+        if (event.which == KEY.ENTER) {
+          handle_changed_text({
+            match_one:  function(){$('#update_button').click();},
+            match_many: function(){open_dialog();}
+          });
           return false;
+        }
       } else {
         state = STATES.UNDEFINED;
       }
     });
 
+    $dummy.on('paste', function(){
+      setTimeout(function() {
+        handle_changed_text();
+      }, 1);
+    });
+
     $dummy.blur(function(){
       window.clearTimeout(timer);
       timer = window.setTimeout(annotate_state, 100);