2016-01-27 65 views
2

我有一个IF语句非常相似,这种小提琴这里:如果声明只适用于一审

http://jsfiddle.net/fz4wF/43/

什么,我想知道的是,我怎么显示alert()只有一次ALL .ccn类的div值超过1000,而不仅仅是第一个实例。我已经尝试了each()函数,但我不太清楚如何使用它。

$(".ccn").keyup(function() { 
 
    if ($(".ccn").val() >= 1000) 
 
    alert('test'); 
 
});
<div class="cardNumber"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
</div> 
 

 
<ul> 
 
    <li class="checkNumber">Card Number</li> 
 
</ul>

+0

使用'如果($(本).VAL()> = 1000)'。在你的情况下,它总会给出匹配选择器的第一个元素的值。同样使用'parseInt' – Rayon

回答

1

使用.filter()将返回仅通过设置条件在功能的那些元件。

另外请注意,您应该使用parseInt与底数(基数)投输入Integer

试试这个:

$(".ccn").keyup(function() { 
 
    var len = $(".ccn").filter(function() { 
 
    return parseInt($(this).val(), 10) >= 1000; 
 
    }).length; 
 
    if ($('.ccn').length == len) { 
 
    alert('Passed'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div class="cardNumber"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
</div> 
 

 
<ul> 
 
    <li class="checkNumber">Card Number</li> 
 
</ul>

+1

_how只显示警报()一次所有与.ccn类的div具有超过1000_的值可能你错过了这个我猜。 – Jai

+1

请注意,OP期望知道* all *输入的值是否大于1000,而不仅仅是当前值。 –

+0

伙计们,我得到了那个错误:(检查更新! – Rayon

3

试试下面的代码:

$('.cnn').on('keyup', function() { 
    flag = true; 
    $.each($('.cnn'), function(index, input) { 
     if (parseInt($(input).val()) <= 1000){ 
      flag = false 
     } 
    }) 

    if(flag) { 
     alert(); 
    } 
}) 

首先,您需要在这些输入元素上添加事件侦听器。 keyup,keydown,change,当用户输入这些输入时触发输入事件。

然后,当用户输入这些输入时,您可以逐个验证每个输入,看看它们是否都满足条件(> 1000)。虽然每次用户输入时都不好验证数值。您可能需要一个油门功能,以便您可以检查每个持续时间的值。

+1

代码只有答案是不好..更好地发布一些解释太 – Jai

+0

谢谢@Jai,添加一些解释。 – jilykate

+0

感谢。我现在有一个新的问题 - http://stackoverflow.com/q/35049834/4674452 – Jason

0

您可以按照@jilykate建议的方式遍历所有input元素,或者您也可以使用filter()来查看有多少人具有您需要的值,并将这些元素的数量与总数进行比较。您还需要使用parseInt()将从元素值返回的字符串转换为数字进行比较。试试这个:

$(".ccn").keyup(function() { 
 
    var $ccn = $('.ccn'); 
 
    var $validCcn = $ccn.filter(function() { 
 
    return parseInt(this.value, 10) >= 1000; 
 
    }); 
 

 
    if ($ccn.length == $validCcn.length) 
 
    alert('test'); 
 
});
<div class="cardNumber"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
    <input type="text" value="" maxlength="4" name="ccn" class="ccn"> 
 
</div> 
 

 
<ul> 
 
    <li class="checkNumber">Card Number</li> 
 
</ul>