Подтвердить что ты не робот

Флажок и JQUERY: "проверено" всегда FALSE

Код ниже и флажок всегда FALSE. Но на странице это другое. Он не проверяется или не проверяется.

<script type="text/javascript">
 $('.cbOzelHastaAdi').unbind('click');

 $('.cbOzelHastaAdi').click( function() {

    var parentDiv = $(this).parent().get(0);
    var cbs = $(parentDiv).find('table input:checkbox');

   if($(this).attr("checked") === "true") {
        cbs.each(function() { $(this).attr('checked', false); });
    }
    else{
        cbs.each(function() { $(this).attr('checked', true); });
    }

})

</script>
4b9b3361

Ответ 1

Одна из проблем заключалась в том, что у вас был атрибут checked на промежутке, окружающем верхний флажок и метку, и привязывал обработчик событий к диапазону, поэтому checked всегда будет оставаться checked на пролете.

Я переместил обработчики событий в этот флажок и немного прибрал код. Хотя я не верю, что есть проблема в создании ваших собственных атрибутов на элементах HTML, то есть на проверенном атрибуте на элементе span (я думаю, что с ними происходит строгая проверка XHTML), я не считаю, что это хорошая практика.

Я вижу, что вы используете ASP.NET на основе искажения ID - вы можете использовать серверную сторону <%= myControl.ClientID %>, чтобы получить искаженный идентификатор в HTML, отправленный клиенту.

Рабочий пример здесь

   $(function() {     
        $('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi').unbind('click');
        $('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi').click( function() {

           var cbs = $('table input:checkbox');  

           if($(this).is(':checked')){
               cbs.each(function() { $(this).attr('checked', true); });
           }
           else{
            cbs.each(function() { $(this).attr('checked', false); });
           }

        });
    });

EDIT:

В ответ на ваш комментарий у вас есть несколько вариантов решения clientid. Если вы пишете jQuery на странице aspx, вы можете просто использовать

$('#<%= cbOzelKurumHastasi.ClientID %>')

вместо

$('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi')

Если у вас есть jQuery во внешнем файле script, вы можете поместить его на страницу aspx

<script type="text/javascript">
var cbOzelKurumHastasi = '#<%= cbOzelKurumHastasi.ClientID %>';
</script>

а затем используйте переменную во внешнем файле script

$(function() {     
            $(cbOzelKurumHastasi).unbind('click');
            $(cbOzelKurumHastasi).click( function() { ...

Для других вариантов взгляните на этот вопрос и ответ - Как остановить ASP.NET от изменения идентификаторов, чтобы использовать jQuery

Ответ 2

Я обычно использую функцию .is() jQuery для проверки этого

$('.cbOzelHastaAdi').click( function() {
  if($(this).is(':checked')){
    ...
  }else{
    ...
  }
})

Ответ 3

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

Ответ 4

Я столкнулся с теми же проблемами; проверяя, установлен ли флажок (любым из разных способов), всегда возвращается false.

Мое решение (курс проблемы) находилось в используемом селекторе JQuery.

uzay95 использовал селектор классов ".", чтобы выбрать его флажки.

$( 'cbOzelHastaAdi') **

Возвращает набор результатов. Поэтому проверка того, проверена ли она, недействительна, потому что они могут быть несколько флажков... Я знаю, что он использовал ключевое слово this в своем коде, но для меня это также не устранило проблему.

Как только вы установите флажок по идентификатору, вы можете оценить его атрибут "checked".

Ответ 5

Я обнаружил, что, вероятно, лучший способ определить статус проверки в jQuery:

var cbs = $(parentDiv).find('table input:checkbox:checked');

Это даст вам массив каждого входного файла, который был проверен.

Это в основном из документов jQuery:

Selectors/Checked

Ответ 6

Ответ на рассылку Russ Cam, но почему бы не jQueryify его еще?

$(function() {     
    $('.cbOzelHastaAdi').live('click', function() {
        $(this).parents('div').find('table input:checkbox').attr('checked', $(this).attr('checked'));
    });
});

Это предполагает, что класс cbOzelHastaAdi теперь привязан к флажку вместо элемента span. Это должно позволить вам избежать всех беспорядочных переименований ASP и разрешить несколько похожих таблиц на страницу без необходимости в нескольких функциях событий щелчка.

Ответ 8

Это также работает:

(($('input[name="myCheckBox"]:checked').val())=='on')

Он вернет либо true, либо false

где флажок определен как:

<input type="checkbox" name="myCheckBox">