在使表单javascript在foundation中工作时遇到问题

Having trouble getting the forms javascript working within foundation

本文关键字:遇到 问题 工作 foundation 表单 javascript      更新时间:2023-09-26

我正在尝试运行基金会自定义表单javascript,并不断遇到类型错误。错误是

表单无法初始化;TypeError无法调用方法"indexOf"未定义的"

我似乎不明白为什么会出现这个错误。看起来这段代码是的罪魁祸首

return arr.indexOf(item) === idx; around line 272

arr对象在尝试运行此代码时为null。不确定这是否是脚本早期出现其他错误的结果。如有任何帮助,我们将不胜感激。

arr对象在尝试运行此代码时为空

这正是错误所抱怨的。

您需要修复代码以确保arr不是null,或者避免在它为null时使用它。

仅供参考,我刚刚遇到这个。这是一个Prototype.js冲突。基本上,原型<1.7.1没有为Array.filter做一个ployfill,Prototype版本的方法似乎没有传递第三个参数,即arr,也就是undefined。所以你可以做一些事情来解决:

  1. 将Prototype升级到1.7.1-这是我所做的,但我还没有在Magento上彻底测试它,所以可能会有问题。。。这是一个次要的发布,可能出了什么问题:-)
  2. 调整Foundation代码块,这样您就可以提前获得在var中编译的类列表,然后您可以在回调中引用它来过滤:

      // OLD
      $customSelect = $('<div class="' + ['custom', 'dropdown', customSelectSize].concat(copyClasses).filter(function (item, idx, arr) {
        if (item === '') return false;
        return arr.indexOf(item) === idx;
      }).join(' ') + '"><a href="#" class="selector"></a><ul /></div>');
      //-----------------
      // NEW
      var classList = ['custom', 'dropdown', customSelectSize].concat(copyClasses);
      $customSelect = $('<div class="' + classList.filter(function (item, idx, arr) {
        if (item === '') return false;
        arr = typeof arr === 'undefined' ? classList : arr;
        return arr.indexOf(item) === idx;
      }).join(' ') + '"><a href="#" class="selector"></a><ul /></div>');
    
  3. 您可以尝试覆盖Array.filter的Prototype版本,以将Array作为第三个参数传递。我不完全确定它住在哪里,我寻找它,因为这是我第一次倾向于mitgate风险,但我最终决定升级