Найдите конкретный CheckListItem в элементе управления CheckBoxList, используя Javascript или jQuery - PullRequest
1 голос
/ 25 июля 2011

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

Хотя ожидается, что записи в этой таблице изменятся, ожидается, что последний элемент будет иметь текстовое значение Другое с ожидаемым значением.

Если пользователь выбирает «Другое», я хочу иметь возможность включить соответствующее текстовое поле, в котором он вводит указанное «Другое» описание. Я хочу иметь возможность сделать это на клиенте, используя Javascript или jQuery.

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

chkOther = document.getElementbyID ("checkListItem12_chkOccupationOther")

Я не знаю jQuery, но я полагаю, что эта библиотека, вероятно, предоставляет хороший способ получить контроль, используя, например, соответствующую маску ID.

Предложения

Ответы [ 2 ]

1 голос
/ 25 июля 2011

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

function addClick() {
  var form = document.forms['f0'];
  var input, inputs = form.getElementsByTagName('input');
  var i = inputs.length;

  while (i--) {
    input = inputs[i];

    if (input.type == 'checkbox') {
      input.onclick = function() {
        if (this.checked) {

          // Do stuff...
          alert('checked!');

        } else {
          // Put stuff in here if unchecked, probably
          // want to hide whatever is shown when above
          // is clicked
        }
      }
      // Going backward, the first checkbox found is the
      // last one so stop after first one found
      return;
    }
    input = null;
  }
}

Затем добавьте функцию как нижний скрипт, используя функцию DOM ready или window.onload.

1 голос
/ 25 июля 2011

Если вы можете гарантировать, что ваш «Другой» флажок всегда последний, вы можете использовать последний селектор .Использование идентификатора списка флажков:

$(document).ready(function() {
    $("#<%=YourCheckBoxList.ClientID%> input:checkbox:last").click(function(){
       if(this.checked)  {          
          //Enable Text Box Here
       }else{
          //Disable here 
       }
    });
});

РЕДАКТИРОВАТЬ: Обновлено для удаления ненужного преобразования "this" в объект jQuery в соответствии с комментарием RobG.

...