-1

ログインページでフォームを表示/非表示するには、以下の JavaScript を使用します。(プロモーションページ)と呼ばれる別のページからアカウントの作成とログインボタンがあります。ユーザーがログインを押すと、デフォルトでログインフォームを読み込むように設定されているため、それに応じて読み込まれますが、ユーザーがアカウントの作成をクリックすると、代わりにアカウントの作成フォームを読み込みます。

この JS は、プロモーション ページではなく、ログイン ページにのみ読み込まれます。私は JS を初めて使用するので、この読み込みを続行するための正しい方法についてアドバイスを求めたいと思います。

たとえば、[作成] ボタンがプロモーション ページからクリックされた場合に変数を保存し、ページが読み込まれたときにそれを検出しますか? 等

ログインページのスクリプト

  <script>

jQuery(document).ready(function() {     
  App.init();
  Login.init();
});

上記のコードの後に​​ロードインページにロードされたスクリプト

    var Login = function () {

    return {
        //main function to initiate the module
        init: function () {

                invalidHandler: function (event, validator) { //display error alert on form submit   

                },

                highlight: function (element) { // hightlight error inputs
                    $(element)
                        .closest('.control-group').addClass('error'); // set error class to the control group
                },

                success: function (label) {
                    label.closest('.control-group').removeClass('error');
                    label.remove();
                },

                errorPlacement: function (error, element) {
                    error.addClass('help-small no-left-padding').insertAfter(element.closest('.input-icon'));
                },

                submitHandler: function (form) {
                    window.location.href = "index.html";
                }
            });

            $('.forget-form input').keypress(function (e) {
                if (e.which == 13) {
                    if ($('.forget-form').validate().form()) {
                        window.location.href = "index.html";
                    }
                    return false;
                }
            });

            jQuery('#forget-password').click(function () {
                jQuery('.login-form').hide();
                jQuery('.forget-form').show();
            });

            jQuery('#back-btn').click(function () {
                jQuery('.login-form').show();
                jQuery('.forget-form').hide();
            });



                invalidHandler: function (event, validator) { //display error alert on form submit   

                },

                highlight: function (element) { // hightlight error inputs
                    $(element)
                        .closest('.control-group').addClass('error'); // set error class to the control group
                },

                success: function (label) {
                    label.closest('.control-group').removeClass('error');
                    label.remove();
                },

                errorPlacement: function (error, element) {
                    if (element.attr("name") == "tnc") { // insert checkbox errors after the container                  
                        error.addClass('help-small no-left-padding').insertAfter($('#register_tnc_error'));
                    } else {
                        error.addClass('help-small no-left-padding').insertAfter(element.closest('.input-icon'));
                    }
                },

                submitHandler: function (form) {
                    window.location.href = "index.html";
                }
            });

            jQuery('#register-btn').click(function () {
                jQuery('.login-form').hide();
                jQuery('.register-form').show();
            });

            jQuery('#register-back-btn').click(function () {
                jQuery('.login-form').show();
                jQuery('.register-form').hide();
            });
        }

    };

}();
4

2 に答える 2

1

まず、スクリプトを専用のファイルに移動し、関連するすべてのページで.

これにより、コードを繰り返す必要がなくなり、関連するページでコードが読み込まれます。

第二に、更新間で javascript からデータを確実に保持できるとは思いません。

URLでGETを使用するか、ajaxを使用してサーバー側のセッションまたはCookieにデータを保存することにより、データを渡すことができます。

于 2013-06-09T16:40:33.490 に答える
1

あなたが疑問に思っているのは、シングルページアプリケーションへの大まかなアプローチのようです。詳細はこちら: JavaScript SPA-Frameworks (Single Page Application)

正直、初心者にはオススメしません。コードを分割して複数のページ (ログイン ページとプロモーション ページ) を使用し、隠し属性、セッション変数、Cookie を介して変数を交換したり、Ajax 呼び出しを介してロードしたりすることができます。

于 2013-06-09T17:33:11.260 に答える