jQuery滑块超过100%并发出禁用空输入的问题

时间:2013-05-21 16:40:59

标签: jquery

请在此处查看完整的工作代码:http://jsfiddle.net/jfZgN/1/

//enable submit button
if (total == 100){
  if ($("input:text").is(":empty")) {
    $("input:text").attr('disabled','disabled'); 
  } else {
    $("input:text").removeAttr('disabled');
  }
  $('.btn').removeAttr('disabled');
} else {
  $('.btn').attr('disabled','disabled');  
  $("input:text").removeAttr('disabled');     
}

我遇到了jQuery的两个问题:

  1. 当它达到100%时它会禁用所有输入,我只是想让它禁用空的输入,因为它们需要能够改变,如果它们改变并且低于100,则其他输入再次变为活动状态。
  2. 如果你输入超过100%的一堆数字,它允许你这样做,并显示例如120%我需要它停止在100%
  3. 如果有人可以帮助我,这是最后的任务真的很有帮助:)

    由于

1 个答案:

答案 0 :(得分:0)

当总数大于100时,您需要进行测试。在下面的示例中,如果总数超过100,我将值设置为0,但您可以改为使用自己的逻辑。

如果该值等于100,则迭代输入并禁用那些没有值的输入。

请参阅此updated version of your fiddle并附上一个工作示例。

if (total == 100){
    $("input:text").each(function(index) {
        var input = $(this);
        input.prop('disabled', input.val().length === 0);
    });
    $('.btn').prop('disabled', false);
} else {
    if(total > 100) {
        total = total - thisVal;
        $(this).val(0);
        alert('Total must be less than 100');
        //other logic here
    }
    $('.btn').prop('disabled', true);  
    $("input:text").prop('disabled', false);     
}

顺便说一下,一般建议在处理像disabled这样的布尔属性时使用prop(),尽管这不是必需的。