表单点击功能在提交前检查变量

时间:2013-09-28 18:13:36

标签: javascript jquery asp.net webforms

在提交$.get登录表单之前,我使用ASP函数检查与服务器的连接。如果get函数成功并返回true,则表单应该提交,否则如果失败并返回false,则不应该。

我尝试了很多不同的配置,但是我尝试过的所有内容都要么让按钮无法操作,要么只显示一个真实的,绝不是假的!

任何建议表示赞赏。感谢。

<asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Enter" ValidationGroup="LoginUserValidationGroup" class="submitButton" />

UPDATE - 下面的代码正确执行了get函数,但我觉得问题出在$('form')。submit();

当返回true时,页面会像发送数据一样刷新,但系统不会记录用户。为什么会这样!?

submitButton.click(function () { // capitalize username on login

            var url = 'https://examplesite.com/';

            $.get(url).done(function () {

                if (usernameBox.val() === '') {
                    usernameBox.attr('placeholder', 'Username Required');
                    passwordBox.attr('placeholder', '');
                    usernameBox.focus();
                    return false;
                }
                else if (passwordBox.length && passwordBox.val() === '') {
                    passwordBox.attr('placeholder', 'Password Required');
                    usernameBox.attr('placeholder', '');
                    passwordBox.focus();
                    return false;
                }
                else if (passwordBox.length && passwordBox.val().length < 6) {
                    passwordBox.focus();
                    return false;
                }
                else {
                    alert('Successful - Now logging in');
                    $('form').submit();
                }
            }).fail(function () {
                    alert('Failed - No Connection');
            });
            return false;
        });
    };

1 个答案:

答案 0 :(得分:1)

$.get是一个异步函数,因此online永远不会设置为您认为的,因为在调用完成之前正在处理其余代码。将您的逻辑移到.done部分!

$.get(url).done(function () {
    online = true;

    if (online == true) {
        alert('Success');
        $('form').submit();
    }
    else if (online == false) {
        alert('Cannot Connect');
        return false;
    }
    else {
        return false;
    }
}).fail(function () {
    online = false;
});