2012-07-11 3 views
1

Есть ли лучший способ сделать это:Как узнать, установлен ли флажок или нет, jquery?

var IsC = $('input[type=checkbox]').attr("checked") == "checked" ? true : false; 

?

+0

Вы должны уточнить, что вы хотите проверить. Вы хотите знать, где установлен флажок, или установлен ли конкретный? Ваш код проверяет только первый флажок (это нормально, если у вас не более одного). Но кроме этого я совершенно уверен, что это было задано здесь ... –

+1

Возможный дубликат [JQuery - отметьте, установлен ли флажок] (http://stackoverflow.com/questions/2204250/jquery-check-if- checkbox-is-checked) – rlemon

+0

Любой, кто имеет репутацию 1k или выше, должен стыдиться ответить на этот вопрос ... вероятно, один из наиболее часто задаваемых вопросов .. вы просто отвечаете за ферму – rlemon

ответ

4

Вы можете использовать :checked selector

var IsC = $('input[type=checkbox]').is(":checked"); 

Или:

var IsC = $('input[type=checkbox]:checked').length>0; 
+0

'.is()' также возвращает 'true', если хотя бы один проверяется. http://api.jquery.com/is/ – nbrooks

0

Один из способов заключается в использовании решение, отправленный dystroy.

Другим является использование метода prop вместо attr. Проверьте примеры на http://api.jquery.com/prop/

elem.checked 
// true (Boolean) Will change with checkbox state 

$(elem).prop("checked") 
// true (Boolean) Will change with checkbox state 

elem.getAttribute("checked") 
// "checked" (String) Initial state of the checkbox; does not change 

$(elem).attr("checked") //(1.6) 
// "checked" (String) Initial state of the checkbox; does not change 

$(elem).attr("checked") //(1.6.1+) 
// "checked" (String) Will change with checkbox state 

$(elem).attr("checked") //(pre-1.6) 
// true (Boolean) Changed with checkbox state 
1
var IsC = $('input[type=checkbox]').attr("checked") == "checked" ? true : false; 

так же, как просто сказать:

var IsC = $('input[type=checkbox]').attr("checked") == "checked"; 

== так будет возвращать true или false. (Чисто Javascript изменение)


Оптимизация JQuery (с точки зрения количества символов, по крайней мере) является:

var IsC = $('input:checkbox').is(':checked'); 
//returns true if at least one checkbox in the document is checked 

Вы можете добавить область для сравнения, рассказав селектор, где следует ввести:

var IsC = $('#myForm input:checkbox').is(':checked'); 
Смежные вопросы