复选框列表中javascript中的问题
这是我的Javascript,它的行为就像一个单选按钮。其中,用户一次只能选择一个选项(例如:如果他选择item1并选择item2,则item1将被取消选择,如果他再次单击item2,则他将被取消选择为selected item2)。这使得用户可以选择任何一个项目或取消选择要选择的项目 此条件工作正常复选框列表中javascript中的问题,javascript,Javascript,这是我的Javascript,它的行为就像一个单选按钮。其中,用户一次只能选择一个选项(例如:如果他选择item1并选择item2,则item1将被取消选择,如果他再次单击item2,则他将被取消选择为selected item2)。这使得用户可以选择任何一个项目或取消选择要选择的项目 此条件工作正常 问题 当用户再次单击该按钮时,我在页面中有一个按钮,如果用户选择了任何项目[例如,在单击按钮之前选择了项目1。然后在单击按钮之后。现在,如果我们在复选框列表中选择了任何项目,则当我在复选框列表中选
问题 当用户再次单击该按钮时,我在页面中有一个按钮,如果用户选择了任何项目[例如,在单击按钮之前选择了项目1。然后在单击按钮之后。现在,如果我们在复选框列表中选择了任何项目,则当我在复选框列表中选择其他项目时,最初选择的项目1不会被取消选择 下面是我的代码
var objChkd;
function HandleOnCheck()
{
var chkLst = document.getElementById('CheckBoxList1');
if(objChkd && objChkd.checked)
objChkd.checked=false;objChkd = event.srcElement;
}
并将客户端事件注册到页面上的“CheckBoxList1”中
CheckBoxList1.Attributes.Add("onclick","return HandleOnCheck()");
在.cs文件中,我不想执行此CheckBoxList1.clearSelection()
任何帮助都会很好
谢谢你你的问题很清楚,但还不够具体。但让我们一起努力找出解决办法 如果您试图选中或取消选中前一项,我建议您在“ListItem”的类中使用onclick处理程序,而不是在列表本身中使用onclick处理程序(假设有人单击列表项旁边,因此您的状态将不正确) 这也使您可以自由地不再依赖于浏览器兼容性,如window.event或event,或其他任何功能。您可以将节点作为函数的参数
ListItem1.Attributes.Add("onclick","return HandleOnCheck(this)");
ListItem2.Attributes.Add("onclick","return HandleOnCheck(this)");
此外,尽量避免使用硬编码id的内部检查功能
接下来,您可以更好地将项目状态保存在函数范围内,而不是保存在函数范围外。您可以通过将参数指定给函数本身来完成此操作,如下所示:
HandleOnCheck.selectedItem = someNode;
因此,完整的代码是:
function HandleOnCheck(node) {
var oldNode = HandleOnCheck.selectedItem;
if(oldNode) {
oldNode.checked = false;
}
HandleOnCheck.selectedItem = node;
}
和处理程序部分:
ListItem1.Attributes.Add("onclick","return HandleOnCheck(this)");
ListItem2.Attributes.Add("onclick","return HandleOnCheck(this)");
这应该会有帮助。这是相当令人困惑的。似乎缺少代码:
objChkd
在哪里声明?为什么在函数中定义chkLst
,然后不使用它?最重要的是,为什么不使用实际的单选按钮?可能是因为单选按钮无法取消选中。