-2

Magento のチェックアウト ページで、次のエラーが表示されます。

VarienForm is not defined [Break On This Error]

var loginForm = new VarienForm('login-form', true);

しかし、ユーザー名とパスワードを入力すると、ログインします。エラーを削除できますか?

PS: varien js ライブラリをフッターに移動しました。

4

3 に答える 3

0

まだ定義されていない関数を呼び出そうとしているようです。JavaScript では、変数、関数、およびオブジェクトを使用する前に宣言する必要があります。

すべての定義をフッターに移動し、ページの途中でそれらを呼び出そうとすると、「未定義」エラーが発生します。

// Example Success
var test = "OK!";
alert(test) // Alerts: OK!

// Example Fail
alert(test); // Alerts: undefined
var test = "OK!";

簡単な例ですが、上記のようにすべてに当てはまります。使用するものはすべて、使用する前に定義する必要があります。

$(function() {

    // Define VarienForm here somewhere
    var loginForm = new VarienForm('login-form', true);

});

このコードは未定義のエラーなしでページ上で実行され、フッターまたはヘッダーに配置できます。

于 2012-11-26T07:40:52.457 に答える
0

おそらくJavaScriptフレームワークの競合です。

jQuery は、カート機能、検証、およびウィンドウ シェード効果で優先的に使用されるプロトタイプと競合します。

Prototype の前に jQuery を head にロードし、jQuery の noconflict 関数を呼び出します。

ここで回答 Magento の jQuery

varien のものを元の場所に戻します。フレームワークは、ページが読み込まれる前に読み込まれる必要があるため、適切に機能します。

于 2012-11-26T18:57:24.527 に答える
0

エラーは、スクリプトが機能していないことを意味します-それだけです。ログインしているという事実は、VarienForm オブジェクトとは何の関係もありません。これは送信ボタンのある HTML フォームであるため、もちろん送信してログインします。VarienForm の主なタスクは、送信前にフォーム データを検証することです。したがって、通常、空のパスワードまたはログインでログインしようとすると、VariendForm によってフォームが送信されなくなります。あなたの場合、スクリプトが壊れていると、送信前に何もしません。

申し訳ありませんが、最善のアドバイスは、このライブラリを移動しないことです。はい、このエラーが発生するすべてのページを修正できますが、多くの時間がかかります。また、サードパーティの拡張機能をインストールする場合は、それらも変更する必要があります。そのような最適化に価値があるとは思いません。

PS。また、Magento 2 をいじっていない限り、VarienForm は jQuery ではなくプロトタイプに基づいているため、タグが正しくなく、SnapGravy のコードはおそらく機能しません。

于 2012-11-26T15:11:09.560 に答える