Включение отключенного CheckBoxList в javascript - проверенные элементы не распознаются после обратной передачи

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

Я могу включить флажки с помощью jQuery, но проблема в том, что после отправки страницы выбранные элементы в ChceckBoxList не распознаются (вероятно, потому что элемент управления не находится в ViewState).

Простой пример для сценария:

<asp:CheckBoxList ID="chkList1" runat="server" Enabled="false" ClientIDMode="Static">
       <asp:ListItem Value="123" />
       <asp:ListItem Value="456" />
       <asp:ListItem Value="789" />
</asp:CheckBoxList>

$(document).ready(function()
{
    $("#divEnable").click(function()
    {
        var inputs = $("#chkList1").find("input");
        for (var i = 0; i < inputs.length; i++)
        {
            inputs[i].disabled = false;
        }
    });
}

А то после включения галочек, их выбора и отправки постбека - никакие выделенные элементы не распознаются.

Я пробовал отключать элементы "вручную", как в

chkList1.Items[0].Attributes.Add("disabled", "disabled");

Но это не сработало (атрибут disabled был прикреплен к содержащему диапазону вместо элемента управления вводом).

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

Есть ли способ обойти это?


person Amit    schedule 16.05.2012    source источник
comment
Вы должны показывать сгенерированный HTML-код, который попадает в браузер, а не ASP, который его создает.   -  person RobG    schedule 16.05.2012
comment
Это просто таблица, в которой каждая строка содержит ввод флажка и соответствующую метку в диапазоне. Когда Enabled="False", входы имеют disabled="disabled".   -  person Amit    schedule 16.05.2012


Ответы (3)


попробуй это:

$(document).ready(function()
{
    $("#divEnable").click(function()
    {
        var inputs = $("#chkList1").find("input")
            .each(function(){
                            //if($(this).is(":disabled"))
                            //{
                               $(this).prop("disabled",true);
                            //}
                          });      
});

Ссылка:
jQuery asp control .prop («отключено», «»), не включающий флажок в IE 9
Не удалось обработать флажок отключения

person Niranjan Singh    schedule 16.05.2012
comment
Я думаю, что это должно быть $(this).prop("disabled",false). В любом случае, моя проблема не в том, чтобы установить флажки (они доступны для щелчка после выполнения моего события click), а в том, что выбранные элементы не распознаются на стороне сервера после обратной передачи. Я отредактирую вопрос, чтобы сделать его более понятным. - person Amit; 16.05.2012

Вы можете использовать это

  for (i = 0; i < document.forms[0].length; i++)
   {
      e = document.forms[0].elements[i];
      if (e.id.indexOf("chklist") != -1)
      {
           e.disabled = false;
      }
  }
person mehmood    schedule 16.05.2012

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

    var checkBoxListToChange = document.getElementById('');
    var checkboxes = checkBoxListToChange.getElementsByTagName("input");
    for (var x = 0; x < checkboxes.length; x++) {
        checkboxes[x].disabled = true;
    }
person user2207612    schedule 15.09.2015