jQuery:检查两个输入字段值是否都是> 0

时间:2016-03-07 19:26:06

标签: jquery validation input

自从几周前我开始使用jQuery以来,我仍需要一些支持......

我必须输入字段(type = number)。如果两个输入字段值都已填写(两者,而不仅仅是一个),并且如果它们大于0.则应显示隐藏元素。

我想出了这个...但我想我不理解每个循环......

这是我的代码到目前为止..提前致谢!



$('#container').on('input', '.sides', function(){ 
    $.each($('input[type=number]'),function(){
    	if(this.value > 0){
      	$('#content').removeClass('hidden');
      } else {
      	$(this).addClass('marker');
      }
    });   
});

.hidden {
  display:none;
}
.marker {
  border:3px solid red;
  background:yellow;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<div id="container">
<input type="number" class="sides" id="side_a">
<input type="number" class="sides" id="side_b">

<div class="hidden" id="content">
<h1>
Hello :)
</h1>
</div>
</div>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:3)

您可以使用filter获取符合条件的inputs列表 - 然后与总长度进行比较:

var hasFilledInEverything = $('input[type=number]').filter(function() {
    return this.value > 0;
}).length == $('input[type=number]').length;

if (hasFillerInEverything) {
    //add class
} else {
    //remove
}

答案 1 :(得分:1)

此处不需要$.each()来电,您只需要获取input事件中input个元素的值并进行比较。试试这个:

&#13;
&#13;
$('#container').on('input', '.sides', function() {
  var aValue = $('#side_a').val();
  var bValue = $('#side_b').val();
  if (aValue > 0 && bValue > 0) {
    $('#content').removeClass('hidden');
  } else {
    $('#content').addClass('hidden');
    $(this).addClass('marker');
  }
});
&#13;
.hidden {
  display: none;
}
.marker {
  border: 3px solid red;
  background: yellow;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<div id="container">
  <input type="number" class="sides" id="side_a">
  <input type="number" class="sides" id="side_b">

  <div class="hidden" id="content">
    <h1>
Hello :)
</h1>
  </div>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

每个都像for循环。 所以代码等于:

for( i = 0; i < $('input[type=number]').length; i++{
  if($('input[type=number]')[i] > 0){
    $('#content').removeClass('hidden');
  } else {
    $('input[type=number]')[i].addClass('marker');
  }
}

基本上,您没有考虑该代码中的两个输入。如果你要使用$ each,你需要一个辅助变量来跟踪你的结果,并在循环行为基于它之后