2009-11-09 18 views
6

Necesito contar el número de entradas de texto con un valor de 1.jQuery: contar el número de entradas con un valor específico

He intentado lo siguiente, pero sin suerte.

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

Usando $('.class[value="1"]') funciona técnicamente, sin embargo, si los valores de la entrada de texto se cambian después de la carga, todavía cuenta como su valor de carga por defecto.

Tomé una oportunidad si uso el evento de clic .live para obtener el valor actual, pero todavía no tuve suerte.

no he tenido suerte en absoluto el uso de $('.class:contains("1")')

Parece muy simple, pero hasta ahora me ha eludido.

+0

¿cuál es el margen de beneficio como? –

Respuesta

14

Este ejemplo demuestra que esto funciona:

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

Alternativamente, usted puede simplemente bucle:

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

Pensé que JQuery podría tener un trazador de líneas abreviado, sin embargo, funciona. ¡Gracias! – ticallian

+0

muchas gracias amigo :) –

4

Es necesario repetir con $ each() si desea val actual() valores:

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