2014-11-08 172 views
0

JavaScript/jQuery newbie here!jQuery Counter Not Working

我這裏有如下形式(用引導的傷殘等級,擡起頭):

編輯:類「禁用」是在引導的事情,不正常禁用和啓用按鈕,如果它的存在或不。

<form action="" method="post"> 
<input type="text" id="bio"> 
<p class="bio-counter"></p> 
<input type="text" id="username"> 
<p class="user-counter"></p> 
<input type="submit" class="btn"> 
</form> 

和下面的腳本(我在我的頭標記正確包含的jQuery):

var main = function() { 
    $('.bio-counter').text('500'); 
    $('.user-counter').text('0'); 
    var postLengthUser = $('#username').val().length; 
    var postLengthBio = $('#bio').val().length; 
    $('#username').keyup(function() { 
    $('.user-counter').text(postLengthUser); 
    }); 
    $('#bio').keyup(function() { 
    var charactersLeftBio = 500 - postLengthBio; 
    $('.bio-counter').text(charactersLeftBio); 
    }); 
    if(postLengthUser > 6 && postLengthUser < 21) { 
    if(postLengthBio >= 0 && postLengthBio < 501) { 
     $('.btn').removeClass('disabled'); 
    } else { 
     $('.btn').addClass('disabled'); 
    } 
    } else { 
    $('.btn').addClass('disabled'); 
    } 
} 

$(document).ready(main); 

我遇到了以下問題:

  • 的 'BTN' 不是即使我在輸入中鍵入了足夠的信息,也會失去它的禁用狀態。
  • 計數器沒有更新。

我在做什麼錯?

+0

嘗試把該函數的$(文件)。就緒內(函數(與其說這是在你不使用removeClass和AddClass財產 – 2014-11-08 03:27:46

+0

「禁用」是自舉的事情,並確實禁用和啓用該按鈕,如果它存在或沒有。 – Markipe 2014-11-08 03:30:00

+0

@Markipe類變量 – adbdude 2014-11-08 03:38:03

回答

2
<script> 
    var main = function() { 
     var postLengthUser = 0; 
     var postLengthBio = 0; 

     $('.bio-counter').text(500); 
     $('.user-counter').text(0); 


     var validate = function() { 
      if (postLengthUser > 6 && postLengthUser < 21) { 
       if (postLengthBio >= 0 && postLengthBio < 501) { 
        $('.btn').removeClass('disabled'); 
       } else { 
        $('.btn').addClass('disabled'); 
       } 
      } else { 
       $('.btn').addClass('disabled'); 
      } 
     } 

     $('#username').keyup(function() { 
      postLengthUser = $('#username').val().length; 
      $('.user-counter').text(postLengthUser); 

      validate(); 
     }); 

     $('#bio').keyup(function() { 
      postLengthBio = $('#bio').val().length; 
      var charactersLeftBio = 500 - postLengthBio; 
      $('.bio-counter').text(charactersLeftBio); 

      validate(); 
     }); 

     validate(); 
    } 

    $(document).ready(main); 
</script> 
  1. 你只是在頁面加載驗證禁用條件,應該在每個keyup事件中運行 - 我把它來驗證功能。

  2. postLengthUser和postLengthBio僅在頁面加載時更新。他們也應該更新每個關鍵事件。

+0

這不起作用,但我認爲這可能是因爲變量範圍問題。 – adbdude 2014-11-08 03:46:36

+0

我運行了這段代碼,它似乎對我來說工作正常。你是複製粘貼這個還是嘗試修復你的代碼? – 2014-11-08 03:53:58

+0

工作100%,謝謝! – adbdude 2014-11-09 03:31:07

1

嘗試使用:

$('.btn').prop('disabled', true); 

$('.btn').prop('disabled', false); 

代替。

+0

不工作,同樣的問題仍然發生。 :) – adbdude 2014-11-08 03:34:40