2016-01-27 63 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>