2014-11-08 83 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