Frage

Ich versuche Magento zusätzliche JQuery -Funktionen hinzuzufügen, aber mein Skript kann nicht ausgeführt werden, und in der Browserkonsole bemerke ich diesen Fehler:

Uncaught TypeError: Object function each(iterator, context) {
    var index = 0;
    try {
      this._each(function(value) {
        iterator.call(context, value, index++);
      });
    } catch (e) {
      if (e != $break) throw e;
    }
    return this;
  } has no method 'toLowerCase' 

Hier ist mein Drehbuch

<script>
    jQuery(function() {

        jQuery('.temp-variable-price').on('input', function() {
            if(jQuery('input[class=temp-variable-price]').val()=="free")
            {
                jQuery('.temp-variable-price').val('FREE');
            }
        });

        var validOptions = [];
        validOptions.push("FREE");
        var x = 1;
        while (x<1000) {
            if (x<100) {
                validOptions.push(""+x+"p");
            } else {
                var y = x.toString();
                var z = y.split('');
                validOptions.push(""+z[0]+"."+z[1]+""+z[2]+"");
            }
            x++;
        }
        previousValue = "";

        jQuery('.temp-variable-price').autocomplete({
            autoFocus: true,
            source: validOptions
        }).keyup(function() {
            var isValid = false;
            for (i in validOptions) {
                if (validOptions[i].toLowerCase().match(this.value.toLowerCase())) {
                    isValid = true;
                }
            }
            if (!isValid) {
                this.value = previousValue
            } else {
                previousValue = this.value;
            }
        });

    });
</script>

Es ist eine schöne automatische und validierte Skript für bestimmte Formfelder. Sie können eine Demo sehen hier

Wenn jemand weiß, was dieser Fehler bedeutet, wäre ich so dankbar für eine Erklärung, wie dieses Problem debuggen und behoben werden kann?

War es hilfreich?

Lösung

Es bedeutet validOptions[i] ist keine Zeichenfolge. Verwenden console.log(validOptions[i]); um herauszufinden, was es ist. Es könnte sein undefined.

Optional können Sie Folgendes tun, um sicherzustellen, dass es immer eine Zeichenfolge ist

validOptions[i].toString().toLowerCase()....
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top