0

我正在使用 twitter 引导程序在模态中使用忘记的用户名功能。单击提交按钮时,我需要运行一些验证,如果验证通过,请确保脚本的其余部分只执行一次。

我熟悉该.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();
    }
});

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

4

1 回答 1

1

唔。老实说,我并不完全清楚您需要什么,但请尝试明确设置按钮的道具(我假设它是一个按钮)。

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

此外,我会添加一个 .data 来成功,然后针对它进行测试。

$("body").data("ajaxSuccess", "true");
于 2013-02-28T20:18:09.340 回答