ツイッターブートストラップを使用してモーダルにある忘れられたユーザー名関数に取り組んでいます。[送信]ボタンをクリックしたら、いくつかの検証を実行する必要があります。検証に合格した場合は、スクリプトの残りの部分が1回だけ実行されることを確認してください。
私はこの機能に精通しており、運が悪かったのでセクション内で.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を1回だけ実行するアプローチを見つけるのを手伝ってもらえますか?