2009-11-09 11 views
6

je dois compter le nombre d'entrées de texte avec une valeur de 1.jQuery: Nombre Nombre d'entrées avec une valeur spécifique

J'ai essayé ce qui suit, mais sans succès.

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

En utilisant $('.class[value="1"]') fonctionne techniquement, cependant, si les valeurs de la saisie de texte sont modifiés après charge, il compte toujours comme sa valeur de charge par défaut.

J'ai pris un long coup en utilisant l'événement de clic .live pour obtenir la valeur actuelle mais toujours pas de chance.

J'ai eu pas de chance du tout en utilisant $('.class:contains("1")')

Il semble très simple, mais a jusqu'à présent m'a échappé.

+0

quel est le balisage comme? –

Répondre

14

Cet exemple démontre que cela fonctionne:

<!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> 

Sinon, vous pouvez juste boucle:

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

Je pensais que JQuery pouvait avoir un raccourci, mais cela fonctionne. Je vous remercie! – ticallian

+0

merci beaucoup mec :) –

4

Vous devez itérer avec .each $() si vous voulez valeurs val() en cours:

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