2009-08-28 4 views
1
var $field = $(this); 
      if ($field.is('input')) { 
       alert(1); 
       if ($field.attr('type') == 'checkbox') { 
        alert(2); 
        if ($field.attr('value') == "true") 
         return $field.attr('checked'); 
       } 

       return $field.val(); 
      } 

Я хочу проверить, действительно ли значение флажка установлено. Я добавляю атрибут checked = checked для флажка. но мой код неправильный. пожалуйста, помогите me.thanksJQuery CheckBox

+0

Можете ли вы дать больше контекста? Неясно, где «это». – ChaosPandion

ответ

6

Измените условие для

$("input:checkbox").val() == "true" 

и для проверки флажка вы можете использовать

$("input:checkbox").attr ("checked" , true); 

Вы можете выбрать опцию с помощью

$("input:checkbox") 

и значения с использованием

$("input:checkbox").val() 

Если вы хотите, чтобы проверить все галочки со значением атрибута истинной, то вы можете использовать

$(document).ready (function() 
     { 
      var checkBoxes = $("input:checkbox");   
      checkBoxes.each (function() { 
       if ($(this).val() == "true") 
       { 
        $(this).attr ("checked" , true); 
       } 
      }); 
     }); 
16

Вы можете использовать селектор :checked значительно помочь с этим.

var $field = $(this); 
return $field.is(':checked'); 

Это вернет правильный bool. Если вы вернете attr('checked') или val(), вы получите строку, которая, вероятно, не то, что вы хотите.

См http://docs.jquery.com/Selectors/checked

1
.attr('checked') 

вернется true проверяемых и undefined для неконтролируемого

1

КОРРЕКЦИИ:

.attr("checked") 

вернется "проверенного", если установлен (не верно), "неопределенные" если не проверено.

Если вы хотите, истина/ложь, то вы должны сделать что-то вроде этого:

$("#checker").attr("checked")=="checked"