1

jQueryでさまざまな通貨を変換するのに役立つautoNumeric jQuery プラグインを使用しようとしています。

プラグイン自体は、jsFiddle の例で使用すると機能します。

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

ただし、それを大きなレガシー プロジェクトに統合するとすぐに、194 行目で上記のエラーが発生し始めます。エラーが発生する理由はわかっています。文字列が negativeBracket 関数に渡されていません (negativeBracket(s, nBracket, oEvent)は署名です)。 . 代わりに、jQuery オブジェクトのようです - e.fn.init 1。これがどのように起こっているのか混乱しています。コミュニティが直接的な回答を提供できない可能性があることは承知していますが、これまでのところ何も飛び出していないので、正しい方向に向けられることを望んでいます (回答として受け入れます)。

アップデート

そのため、役立つ可能性のある追加情報をいくつか用意してください。それがどのように起こっているのか、まだ困惑しています(残念ながら、以下の回答は追加の洞察を提供するのに役立ちませんでした)。autoNumeric にリンクするときは、クラス money を含むテキスト フィールドからキーオフします。ボックスに入力しているときに機能します。フォーメーションが見えます。ただし、新しいボックスにタブで移動すると、入力を終えたばかりのボックスは、autoNumeric の 152 行目に同じエラーが発生した後、完全にクリアされます。

@ Carlos487は、文字列ではないオブジェクトがあると言ったとき、彼の答えが正しかったです。代わりに、関数であると私が信じているオブジェクトがあります。Chrome デバッガー ツールで表示される内容は次のとおりです。

e.fn.init[1]

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

「矢印」の項目はさらに展開できます。これがこれ以上の手がかりを提供するかどうかはわかりませんが、少なくとも少し違うものです.

4

3 に答える 3

0

jQuery に干渉している 2 つ目のライブラリを使用していることは間違いありません。おそらく$独自の関数でオーバーライドされています。

jQueryの代わりに使用してみてください$:

jQuery(function () {
    jQuery('.money').autoNumeric('init', {
        aSign: '$',
        vMin: '-999999999.99',
        nBracket: '(,)'
    });
});
于 2013-09-26T03:54:19.827 に答える
0

のようなエラー

オブジェクトにメソッド XXXXX がありません

obj.XXXX()を呼び出そうとしているため、 obj が目的のタイプ (特定のケースではstring ) ではないため、生成されます。

古いブラウザやIEだとちょっと面倒なので別のブラウザで試してみましたか?レガシー アプリで chrome 開発者ツールを使用して、他に競合しているものやエラーが発生しているものがないか確認することをお勧めします

于 2013-09-25T21:30:26.490 に答える