登录后重新执行javascript

时间:2014-08-22 09:25:28

标签: javascript

我有一系列按钮,点击时会执行不同的功能。该功能检查用户是否已登录,如果是,则进行,如果不是,则显示具有登录/创建帐户功能的覆盖。

我想要做的是在登录后重新执行按钮点击,而无需用户重新点击它。

我现在有工作,但我很确定我所做的不是最佳做法,所以寻求有关如何改进的建议...

以下是我正在做的事情:设置一个全局变量“pending_request”,它存储要重新运行的函数,并在登录ajax请求的成功部分调用“eval(pending_request)”

其中一个按钮的示例:

jQuery('#maybe_button').click(function() {
    pending_request = "jQuery('#maybe_button').click()"
    var loggedin = get_login_status();
    if (loggedin == true) {
        rec_status("maybe");
    }
});

success: function(data) {
    if(data === "User not found"){
        alert("Email or Password incorrect, please try again");
    }else{
        document.getElementById('loginscreen').style.display = 'none';
        document.getElementById('locationover').style.display = 'none';
        eval(pending_request);
        pending_request = "";
    }
}

1 个答案:

答案 0 :(得分:0)

注册一个函数来处理点击,然后在没有eval()的情况下直接调用该函数。

jQuery('#maybe_button').on('click', myFunction)

单击按钮时执行myFunction。现在你可以重新运行"每次您需要myFunction()时的功能代码。

顺便说一句,因为您使用的是jQuery,所以$('#loginscreen').hide() $jQuery自动定义的别名。

修改

请查看以下代码:

var pressedButton = null;

$('button1').on('click', function() {
    if (!isLoggedIn()) {
        pressedButton = $(this);
        return;    
    }

    // ...
});

并且,在您的成功处理程序中:

success: function() {
    // ...

    if (pressedButton) pressedButton.trigger('click');

    // ...
}