2017-09-04 79 views
1
//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將繼續進行。因此,我決定在按下按鈕時清除第一次超時(如果存在),但由於某種原因它不起作用。

我一直在尋找這個近一個小時,我似乎無法找到該錯誤,謝謝你幫助我!

大家都很了不起,感謝您幫助我這麼快!

+0

您需要在更高的範圍內定義'errTime' –

+0

您可以在後期回調中定義'errTime'變量。所以每次調用函數時都會創建一個新的'errTime'變量。考慮爲單擊事件定義'errTime'變量。這樣所有的點擊處理程序將訪問相同的'errTime'。 – Bellian

回答

1

在變量的代碼範圍後回調函數內結束使全球可用,那麼這個變量,將工作只是在你的超時功能 的範圍稱爲

var errTime; 
$('#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) { 

      clearTimeout(errTime); 

     $('.errorMsg').html('<span class="w3-display-middle">' + data + '</span>'); 
     errTime = setTimeout(function() { 
      $('.errorMsg').html(''); 
     }, 5000); 
    }); 
}); 
0

範圍界定問題。

var errTime;移至$.post的初始呼叫之上,因此不會在每次呼叫時重新定義。保持errTime = setTimeout(....)原樣,但沒有var

+0

在'$('#registerCreateAccount')。on'之前更好地定義它,因爲點擊事件將被多次調用並且僅觸發一個發佈請求。 – Bellian

+0

@Bellian,對,如果他希望能夠更全球地使用errTime。如果只是爲了這個按鈕/功能,那麼最好將其限制在帖子中。 – pbuck

0

VAR errTime IST外線定義errTime全局或$( '#registerCreateAccount')。在( '點擊',函數(){

功能,可以定義UID等等......裏面

另一種方法是使用窗口['errTime '] = ....