对象在jQuery插件中没有方法“charAt”

Object has no method 'charAt' in jQuery plugin

本文关键字:有方法 charAt jQuery 插件 对象      更新时间:2023-09-26

我正在尝试使用autoNumeric jQuery插件,该插件有助于在jQuery中转换各种货币。

当我在 jsFiddle 示例中使用它时,插件本身可以工作。

$(function () {
    $('.money').autoNumeric('init', {
        aSign: '$',
        vMin: '-999999999.99',
        nBracket: '(,)'
    });
});

但是,一旦我将其集成到一个大型遗留项目中,我就开始在第 194 行收到上述错误。我知道为什么我会收到错误 - 字符串没有传递到 negativeBracket 函数中(negativeBracket(s, nBracket, oEvent)是签名(。相反,它似乎是一个jQuery对象 - e.fn.init1。我对这种情况是如何发生的感到困惑。我意识到社区可能无法给出直接答案,但我希望(并且会接受作为答案(被指向正确的方向,因为到目前为止还没有任何东西跳出来。

更新

因此,请提供一些可能有用的其他信息。它仍然让我困惑它是如何发生的(不幸的是,下面的答案无助于提供任何其他见解(。当我在自动数字中链接时,我用类钱将其从任何文本字段中键入。当我在框中输入时,它确实有效。我可以看到格式。但是,当我进入一个新框时,我刚刚完成键入的框在 autoNumeric 中点击第 152 行后完全清除,并出现完全相同的错误。

@Carlos487的回答是正确的,他说我有一个不是字符串的对象。相反,我有一个对象,我相信,它是一个函数。以下是我在Chrome调试器工具中看到的内容:

e.fn.init[1]
> 0: input#price.money required
> context: input#price.money required
 length: 1
 selector: ""
> __proto__: Object[0]

"箭头"项可以进一步展开。我不知道这是否提供了更多的线索,但它至少有点不同。

错误,如

对象中没有方法 XXXXX

之所以产生,是因为您正在尝试调用 OBJ。XXXX(( 和 obj 不是所需的类型,在您的特定情况下是字符串

您是否尝试过其他浏览器,因为旧或IE可能有点麻烦。我建议将chrome开发人员工具与旧版应用程序一起使用,以查看是否有其他冲突或产生错误

我敢打赌,你正在使用第二个干扰jQuery的库。它可能已经用自己的功能覆盖了$

尝试使用 jQuery 而不是 $

jQuery(function () {
    jQuery('.money').autoNumeric('init', {
        aSign: '$',
        vMin: '-999999999.99',
        nBracket: '(,)'
    });
});

事实证明,这个问题是无数的问题,加剧了我看到的错误。正在发生的几件事:

  1. 验证器插件将 jQuery 对象包装在自己的结构中(因此出现了 charAt 问题(。
  2. 一旦我解决了这个问题,我还了解到一些自制的代码也在擦除和重写数据到字段中以提供格式(这也是 autoNumeric 所做的(,所以 autoNumeric 会爆炸,因为它会得到一个空值并尝试格式化它。

还有一些其他随机的疯狂也需要清理。 所以...问题已解决!还有更多的工作要做,但至少这个障碍已经过去了。谢谢大家的帮助。