Флажок и JQUERY: “проверяется” всегда ЛОЖЬ

Нет, PhpSpreadsheet не поддерживает элементы формы; и функции Excel, которые не поддерживаются, просто не загружаются при загрузке файла, поэтому не существуют в объекте электронной таблицы при его сохранении

18
задан Chuck Le Butt 6 January 2017 в 15:01
поделиться

6 ответов

One of the problems was that you had the checked attribute on the span surrounding the top checkbox and label and were binding an event handler to the span, therefore checked will always remain checked on the span.

I have moved the event handlers to the checkbox instead and tidied up the code a bit. Whilst I don't believe there is a problem in constructing your own attributes on HTML elements i.e. a checked attribute on a span element (I think XHTML strict validation fails with them), I don't whether it's considered good practice to do so.

I can see that you are using ASP.NET, based on the ID mangling - you can use server side <%= myControl.ClientID %> to get the mangled id to render in the HTML sent to the client.

Working Example here

   $(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:

In response to your comment, you have a couple of options for resolving the clientid. If you write your jQuery in the aspx page, then you can simply use

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

in place of

$('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi')

If you have your jQuery in an external script file then you could put this in your aspx page

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

and then use the variable in your external script file

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

For other options take a look at this question and answer - How to stop ASP.NET from changing ids in order to use jQuery

37
ответ дан 30 November 2019 в 06:35
поделиться

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

$('.cbOzelHastaAdi').click( function() {
  if($(this).is(':checked')){
    ...
  }else{
    ...
  }
})
7
ответ дан 30 November 2019 в 06:35
поделиться

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

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

Это даст вам массив каждого проверенного ввода.

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

Selectors / Checked

0
ответ дан 30 November 2019 в 06:35
поделиться

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

3
ответ дан 30 November 2019 в 06:35
поделиться

Ответ Расс Кэма работает, но почему бы не jQueryify еще раз?

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

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

0
ответ дан 30 November 2019 в 06:35
поделиться

=== Это безопасный компаратор типа для JS

. https://developer.mozilla.org/en/core_javascript_1.5_Reference/operators/Comparison_operators

0
ответ дан 30 November 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: