Что может вызвать - uncaught typeerror: validoptions [i] .tolowercase не является функцией?

magento.stackexchange https://magento.stackexchange.com/questions/15403

Вопрос

Я пытаюсь добавить дополнительную функциональность jQuery в Magento, но мой скрипт не может работать, и в консоли браузера я замечаю эту ошибку:

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' 

Вот мой сценарий

<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>

Его хороший автозаполнение и проверка скрипта для определенных полей формы, вы можете увидеть демонстрацию здесь

Если кто -то знает, что означает эта ошибка, я был бы так благодарен за объяснение того, как отладить и исправить эту проблему?

Это было полезно?

Решение

Это означает validOptions[i] не строка. Использовать console.log(validOptions[i]); Чтобы узнать, что это такое. Может быть undefined.

При желании вы можете сделать следующее, чтобы убедиться, что это всегда строка

validOptions[i].toString().toLowerCase()....
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top