customer_autocomplete
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 29 Nov 2012 15:37:06 +0000 (16:37 +0100)
committerSven Schöling <s.schoeling@linet-services.de>
Thu, 29 Nov 2012 15:37:06 +0000 (16:37 +0100)
Javascript war nicht in der Lage mehr als ein Feld zu handhaben. Es ist
jetzt ausgelagert in ein Javascript und wird nur bei Bedarf geladen.

SL/Template/Plugin/L.pm
js/autocomplete_customer.js [new file with mode: 0644]

index c590082..4ed65ab 100644 (file)
@@ -396,34 +396,10 @@ sub customer_picker {
   my ($self, $name, $value, %params) = @_;
   my $name_e    = _H($name);
 
-  $self->hidden_tag($name, (ref $value && $value->can('id')) ? $value->id : '') .
-  $self->input_tag("$name_e\_name", (ref $value && $value->can('name')) ? $value->name : '', %params) .
-  $self->javascript(<<JS);
-function autocomplete_customer (selector, column) {
-  \$(function(){ \$(selector).autocomplete({
-    source: function(req, rsp) {
-      \$.ajax({
-        url: 'controller.pl?action=Customer/ajax_autocomplete',
-        dataType: "json",
-        data: {
-          column: column,
-          term: req.term,
-          current: function() { \$('#$name_e').val() },
-          obsolete: 0,
-        },
-        success: function (data){ rsp(data) }
-      });
-    },
-    limit: 20,
-    delay: 50,
-    select: function(event, ui) {
-      \$('#$name_e').val(ui.item.id);
-      \$('#$name_e\_name').val(ui.item.name);
-    },
-  })});
-}
-autocomplete_customer('#$name_e\_name');
-JS
+  $::request->{layout}->add_javascripts('autocomplete_customer.js');
+
+  $self->hidden_tag($name, (ref $value && $value->can('id') ? $value->id : ''), class => 'customer_autocomplete') .
+  $self->input_tag("$name_e\_name", (ref $value && $value->can('name')) ? $value->name : '', %params);
 }
 
 # simple version with select_tag
diff --git a/js/autocomplete_customer.js b/js/autocomplete_customer.js
new file mode 100644 (file)
index 0000000..6439455
--- /dev/null
@@ -0,0 +1,25 @@
+$(function(){
+  $('input.customer_autocomplete').each(function(i,real){
+    var dummy = $('#' + real.id + '_name');
+    $(dummy).autocomplete({
+      source: function(req, rsp) {
+        $.ajax({
+          url: 'controller.pl?action=Customer/ajax_autocomplete',
+          dataType: "json",
+          data: {
+            term: req.term,
+            current: function() { real.val },
+            obsolete: 0,
+          },
+          success: function (data){ rsp(data) }
+        });
+      },
+      limit: 20,
+      delay: 50,
+      select: function(event, ui) {
+        $(real).val(ui.item.id);
+        $(dummy).val(ui.item.name);
+      },
+    });
+  })
+})