使用Javascript或jQuery在CheckBoxList控件中查找特定的CheckListItem

时间:2011-07-25 00:49:18

标签: javascript jquery asp.net checklistbox

我有一个CheckBoxList,它使用表格中的数据显示复选框列表。

虽然预计此表中的记录会发生变化,但预计最后一项的文本值为“其他”并具有预期值。

如果用户选择“其他”,我希望能够启用相关文本框,并在其中输入指定的“其他”描述。我希望能够使用Javascript或jQuery在客户端上执行此操作。

由于动态创建了ID个别列表项,因此可以避免硬编码,例如:

chkOther = document.getElementbyID(“checkListItem12_chkOccupationOther”)

我不知道jQuery,但我认为该库可能提供了一种使用匹配ID掩码获得控制的好方法,例如。

建议?

2 个答案:

答案 0 :(得分:1)

如果您可以保证“其他”复选框始终位于最后,则可以使用last selector。 使用复选框列表的ID:

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

编辑:已根据RobG的评论更新,以删除不必要的“this”转换为jQuery对象。

答案 1 :(得分:1)

你可以很容易地用普通的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将函数添加为底部脚本。