2009-11-09 20 views
6

muszę policzyć liczbę wejść tekstowych o wartości 1.jQuery: Policz liczbę wejść z konkretną wartość

Próbowałem następujących, ale bez powodzenia.

$('.class[value="1"]').length 
$('.class:contains("1")').length 

Korzystanie $('.class[value="1"]') technicznie działa, jednak jeśli wartości w wprowadzania tekstu są zmieniane po obciążeniu, to nadal liczy się go jako wartość domyślną obciążenia.

Zrobiłem długie ujęcie, używając zdarzenia kliknięcia .live, aby uzyskać aktualną wartość, ale wciąż nie ma szczęścia.

nie miałem szczęścia w ogóle używając $('.class:contains("1")')

wydaje się bardzo proste, ale jak dotąd wymyka mi.

+0

co znaczniki jak? –

Odpowiedz

14

Ten przykład pokazuje, że to działa:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function() { 
    $("#btn").click(function() { 
    alert($(":input[value='1']").length); 
    }); 
}); 
</script> 
</head> 
<body> 
<input type="text"> 
<input type="text"> 
<input type="text"> 
<input type="button" id="btn" value="How many?"> 
</body> 
</html> 

Alternatywnie można po prostu pętla:

var matches = 0; 
$(":input.class").each(function(i, val) { 
    if ($(this).val() == '1') { 
    matches++; 
    } 
}); 
+0

Myślałem, że JQuery może mieć skróconą jedną linijkę, jednak działa. Dziękuję Ci! – ticallian

+0

dziękuję bardzo kolego :) –

4

trzeba iteracyjne z $ .each() jeśli chcesz aktualny val() Wartości:

k=0; 
$('.class').each(function(i, e) { 
    if ($(e).val() == "1") k++; 
}); 
1
$(':input.class').filter(function() { 
    return $(this).val() == '1' 
}) 
Powiązane problemy