2009-11-09 3 views
6

мне нужно подсчитать количество текстовых входов со значением 1.JQuery: Count Количество входов с определенным значением

Я попытался следующие, но не повезло.

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

Использование $('.class[value="1"]') технически работает, однако, если значения в вводе текста изменяются после загрузки, он по-прежнему считает его в качестве значения нагрузки по умолчанию.

Я сделал длинный выстрел, используя событие щелчка .live, чтобы получить текущее значение, но все равно не повезло.

Я не везло на всех, используя $('.class:contains("1")')

Это кажется очень простым, но до сих пор ускользает от меня.

+0

что разметка как? –

ответ

14

Этот пример показывает, что это работает:

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

В качестве альтернативы вы можете просто цикл:

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

Я думал, что JQuery может иметь сокращенный один вкладыш, однако он работает. Спасибо! – ticallian

+0

спасибо большое мат :) –

4

Вам нужно перебирать с $ .each(), если вы хотите, текущий Val() значения:

k=0; 
$('.class').each(function(i, e) { 
    if ($(e).val() == "1") k++; 
}); 
1
$(':input.class').filter(function() { 
    return $(this).val() == '1' 
}) 
Смежные вопросы