我必须输入字段(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;
答案 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
个元素的值并进行比较。试试这个:
$('#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;
答案 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,你需要一个辅助变量来跟踪你的结果,并在循环行为基于它之后