Jquery禁用按钮,直到两个输入具有最小长度

时间:2015-11-19 17:29:54

标签: javascript jquery

我试图保持输入禁用,直到2个输入至少有4个字符。我能在SO上找到的最接近的用户总共可以找到8个字符,但这样就可以让其中一个输入为空白,而另一个输入则超过8.这是我尝试过的:

没有on()

$('#ancestor input').keyup(function(){
  var foo = $('input[name=foo]').val();
  var bar = $('input[name=bar]').val();    
    if(foo.length > 4 && bar.length > 4){  
      $('#some-button').prop('disabled', false);
      }else{
      $('#some-button').prop('disabled', true);
      }  
});

使用on()

$('#ancestor input').on('keyup',function(){
  var foo = $('input[name=foo]').val();
  var bar = $('input[name=bar]').val();    
    if(foo.length > 4 && bar.length > 4){  
      $('#some-button').prop('disabled', false);
      }else{
      $('#some-button').prop('disabled', true);
      }  
});

有趣的是,我可以console.log(foo.length)console.log(bar.length)看到每个keyup的两个长度都很好。

4 个答案:

答案 0 :(得分:5)

正如years所述,您的情况是使用$builder->add('date', 'date', array( 'label' => 'Date', 'format' => 'dd MM yyyy', 'years' => range(date('Y'), date('Y') + 5), 'required' => true )); 代替A. Wolff

>

如果您有2个输入元素,您也可以反转条件:

>=

从概念上讲,这意味着如果任何输入不是4个字符,则禁用""而不是"如果两个输入的长度都超过4个字符,则不要禁用#34;。

答案 1 :(得分:2)

就我所见,您的代码可以正常工作。唯一的问题是,由于您选择使用的运营商,您的条件会检查至少5个字符,而不是4个字符。

使用>=代替,因为这会声明"等于或大于"



$('#ancestor input').on('keyup',function(){
  
  var foo = $('input[name=foo]').val();
  var bar = $('input[name=bar]').val(); 
  
  $('#some-button').prop('disabled', !(foo.length >= 4 && bar.length >= 4));
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<form id="ancestor">
  <input name="foo">
  <input name="bar">
  <input id="some-button" type="submit" disabled>
</form>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以尝试将jquery对象长度与已过滤的jquery对象进行匹配,以查看它们是否不同。

$('#ancestor input').on('input keyup change paste', function () {
    var els = $('input[name=foo],input[name=bar]');
    var filtered = els.filter(function(){
       return (this.value.length >= 4); 
    });
    $('#some-button').prop('disabled', (els.length != filtered.length));
});

http://jsfiddle.net/9se4x2an/

答案 3 :(得分:0)

事实是,我已经盯着它看了3个小时而且这只是一个错字(错误的长度作为其中一个变量的 lengh ) 。显然需要更多的咖啡才能看到它。感谢大家的帮助。