1

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

虽然此表中的记录预计会更改,但最后一项预计将具有其他文本值和预期值。

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

由于 ID 单个列表项是动态创建的,因此有一种方法可以避免硬编码,例如:

chkOther = document.getElementbyID("checkListItem12_chkOccupationOther")

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

建议?

4

2 回答 2

1

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

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

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

于 2011-07-25T01:07:02.053 回答
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 就绪函数或 window.onload。

于 2011-07-25T02:23:55.437 回答