-1

下面的 javascript 用于在登录页面中显示/隐藏表单。我有一个来自另一个名为(促销页面)的页面的创建帐户和登录按钮。当用户按下登录时,它将相应地加载,因为它默认设置为加载登录表单,但是当用户单击创建帐户时,我希望它加载创建帐户表单。

这个 JS 只加载在登录页面,而不是促销页面。我是 JS 新手,想就正确的方法寻求建议以继续进行此加载。

例如,如果从促销页面单击“创建”按钮并在加载页面时检测到它,则保存变量?ETC

登录页面脚本

  <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(单页应用程序)

老实说,我不建议初学者这样做。您可以将代码分解为用户多个页面(登录页面和促销页面)并通过隐藏属性、会话变量、cookie 或通过 Ajax 调用加载来交换变量。

于 2013-06-09T17:33:11.260 回答