我正在使用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吗?
答案 0 :(得分:1)
HMM。说实话,我并不完全清楚你需要什么,但尝试明确设置按钮的支柱(我假设它是一个按钮)。
$('#btnForgotUsername').prop('disabled', true);
另外我会为成功添加一个.data,然后只测试即。
$("body").data("ajaxSuccess", "true");