将jQuery .one()函数与验证结合使用

时间:2013-02-28 20:04:11

标签: jquery

我正在使用twitter bootstrap处理一个忘记的用户名函数。单击“提交”按钮时,我需要运行一些验证,如果验证通过,请确保脚本的其余部分仅执行一次。

我熟悉.one()功能并试图在$(this).one('click', function()部分内使用if(isValid)而没有运气。我还在验证检查后添加了.addClass("disabled");但没有运气。

以下是javascript块的简化版本:

$('#btnForgotUsername').live('click', function (e) {

    // Clear the error div of any previous errors    
    $('#vsForgotUsername').hide().empty();

    var isValid = true;

    // Must Enter Email Address
    var emailEntered = $('#txtEmailAddress').val();
    if (!$.trim(emailEntered).length) {
        $('#vsForgotUsername').append('Email address required');
        isValid = false;
    }
    else {
        // If Email Entered verify that it is a valid email address
        if (!validateEmail(emailEntered)) {
            $('#vsForgotUsername').append('Enter valid email address.');
            isValid = false;
        }
    }

    if (isValid) {
        $('#btnForgotUsername').addClass("disabled");

        var proxy = new serviceProxy('/Login.aspx/', { async: true });
        proxy.invoke
        (
            'forgotUser',
            {
                emailAddress: $('#txtEmailAddress').val()
            },
            function (result) {
                if (result.d == true) {
                    $('#pnlForgotUsername, #btnForgotUsername').hide();
                    $('#pnlForgotUsernameSuccess').fadeIn();
                    return;
                }
                else {
                    $('#btnForgotUsername').removeClass("disabled");
                    $('#vsForgotUsername').fadeIn().append("We do not have a record with that email address.");
                }
            },
            function (jqXHR, textStatus, errorThrown) {
            },
            null
        );
    }
    else {
        $('#vsForgotUsername').fadeIn();
    }
});

有人可以帮我找到一种方法来完成验证,如果validation = true,只能执行一次ajax吗?

1 个答案:

答案 0 :(得分:1)

HMM。说实话,我并不完全清楚你需要什么,但尝试明确设置按钮的支柱(我假设它是一个按钮)。

       $('#btnForgotUsername').prop('disabled', true);

另外我会为成功添加一个.data,然后只测试即。

$("body").data("ajaxSuccess", "true");