//Create Account - Register Button
$('#registerCreateAccount').on('click', function() {
var uid = $('#registerUsername').val();
var email = $('#registerEmail').val();
var age = $('#registerAge').val();
var pwd = $('#registerPassword').val();
var confirmPwd = $('#registerConfirmPassword').val();
$.post('./php/register/createAccount.php', {uid: uid, email: email, age: age, pwd: pwd, confirmPwd: confirmPwd}, function(data) {
if (errTime) {
clearTimeout(errTime);
}
$('.errorMsg').html('<span class="w3-display-middle">' + data + '</span>');
var errTime = setTimeout(function() {
$('.errorMsg').html('');
}, 5000);
});
});
所以基本上我做什麼,我是將數據發送到PHP文件,如果有回調將是一個錯誤信息。因此,我更改了.errMsg div的html,因爲它沒有任何內容,所以它之前是不可見的。由於我只想讓錯誤消息在5秒鐘內出現,我決定在5秒後使用setTimeout清除內容。clearTimeout無法正常工作
問題是,當人們連續多次單擊註冊按鈕時,setTimeout將繼續進行。因此,我決定在按下按鈕時清除第一次超時(如果存在),但由於某種原因它不起作用。
我一直在尋找這個近一個小時,我似乎無法找到該錯誤,謝謝你幫助我!
大家都很了不起,感謝您幫助我這麼快!
您需要在更高的範圍內定義'errTime' –
您可以在後期回調中定義'errTime'變量。所以每次調用函數時都會創建一個新的'errTime'變量。考慮爲單擊事件定義'errTime'變量。這樣所有的點擊處理程序將訪問相同的'errTime'。 – Bellian