Fehler bei JS Erweiterung ?

Hallo Shopware Gemeinde,

ich bin immer noch bei der Programmierung eines Plugins, das ein weiteres Feld bei der Kundenregistrierung gegen eine Datenbank prüft. Das ganze soll on-the-fly im Form passieren:

  • Das Feld konnte ich danke des Shoesize Beispiel schon anlegen. 

  • in der frontend/_public/src/js/jquery.register.js findet sich dann auch folgende Funktion:

     /**
           * Called when a input field lost its focus.
           * Depending on the elements id, the corresponding method will be called.
           * billing ust id, emails and passwords will be validated via AJAX.
           *
           * @public
           * @method onValidateInput
           * @param {jQuery.Event} event
           */
          onValidateInput: function (event) {
              var me = this,
                  $el = $(event.target),
                  id = $el.attr('id'),
                  action,
                  relatedTarget = event.relatedTarget || document.activeElement;
    
              me.$targetElement = $(relatedTarget);
              switch (id) {
              case 'register_personal_email':
              case 'register_personal_emailConfirmation':
                  action = 'ajax_validate_email';
                  break;
              case 'register_billing_ustid':
                  action = 'ajax_validate_billing';
                  break;
              case 'register_personal_password':
              case 'register_personal_passwordConfirmation':
                  action = 'ajax_validate_password';
                  break;
              default:
                  break;
              }
    
              if (!$el.val() && $el.attr('required')) {
                  me.setFieldAsError($el);
              } else if ($el.attr('type') === 'checkbox' && !$el.is(':checked')) {
                  me.setFieldAsError($el);
              } else if (action) {
                  me.validateUsingAjax($el, action);
              } else {
                  me.setFieldAsSuccess($el);
              }
    
              $.publish('plugin/swRegister/onValidateInput', [me, event, action]);
          },
    

in die ich mich gerne per $.subscribe einklinen will um mein zusätzliches Feld abzufangen und eine entsprechende action zu setzen. Da ich noch recht jungfräulich mit JS bin, wollte ich erst mal eine Debugausgabe der ID des Feldes ausgeben, das gerade überprüft wird. Unter /Resources/frontend/js/myScript.js habe ich folgende Funktion, die auch aufgerufen wird:

(function($){
    $.subscribe("plugin/swRegister/onValidateInput", function( me, event, action) {
        var $el = $(event.target);

            console.log("ID: "+$el.attr('id'));
    });
})(jQuery);

Leider, bekomme ich nur ein „undefiend“ und nicht wie Erwartet die ID des INPUT Feldes. Was habe ich in meinem jugendlichen Leichtsinn übersehen ? Wird me, event und action nicht 1:1 and ie Funktion übergeben ?

Gruß

Georg

Ich beantworte meine Frage direkt selber :slight_smile:

die Parameter sind in umgekehrter Reihenfolge. So klappt es:

(function($){
    $.subscribe("plugin/swRegister/onValidateInput", function( action, me, event) {
        var $el = $(event.target);

            console.log("ID: "+$el.attr('id'));
    });
})(jQuery);