Bei tab und enter den ersten full match benutzen. nur wenn der nicht eindeutig ist...
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 10 Jul 2013 11:45:56 +0000 (13:45 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Thu, 11 Jul 2013 09:08:13 +0000 (11:08 +0200)
SL/Controller/Part.pm
js/autocomplete_part.js

index 346a544..f0ad1ca 100644 (file)
@@ -51,6 +51,18 @@ sub action_ajax_autocomplete {
   $self->{parts} = SL::DB::Manager::Part->get_all(query => [ @filter ], limit => $limit);
   $self->{value} = $::form->{column} || 'description';
 
+  # if someone types something, and hits enter, assume he entered the full name.
+  # if something matches, treat that as sole match
+  if ($::form->{prefer_exact}) {
+    for my $part (@{ $self->{parts} }) {
+      if (   lc $part->description eq lc $::form->{term}
+          || lc $part->partnumber  eq lc $::form->{term}) {
+        $self->{parts} = [ $part ];
+        last;
+      }
+    }
+  }
+
   $self->render('part/ajax_autocomplete', { layout => 0, type => 'json' });
 }
 
index 61280fd..90e4312 100644 (file)
@@ -115,7 +115,7 @@ namespace('kivi', function(k){
         $.ajax({
           url: 'controller.pl?action=Part/ajax_autocomplete',
           dataType: "json",
-          data: ajax_data($dummy.val()),
+          data: $.extend( ajax_data($dummy.val()), { prefer_exact: 1 } ),
           success: function (data){
             if (data.length == 1) {
               set_item(data[0]);