我正在使用 javascript 来制作未经检查的 GridView 。 但每当我尝试时,我都无法不受控制。
function UncheckedItemsCheckBox(CheckboxID) {
var checkbox = document.getElementById(CheckboxID);
checkbox.checked = false;
alert(checkbox.id + " : " + checkbox.name + " : " + checkbox.checked);
}
这是输出。
---------------------------
Message from webpage
---------------------------
GridView1_ctl02_txtDoseQty : GridView1$ctl02$txtDoseQty : false
---------------------------
OK
---------------------------
尽管“checkbox.checked”返回“false”作为显示的输出消息,但在 gridview 复选框仍然处于选中状态。
有人可以给我建议吗?
最佳答案
可能发生的情况是您的 CheckBoxID
错误,因此返回错误的元素。
在 JavaScript 中,如果该对象之前没有 checked
属性,则说 checkbox.checked = false;
将添加一个对象,以及提供的值。因此,如果您的 CheckBoxID
实际上是错误的,那么您的警报显示 false 也就不足为奇了;使用 getElementById
拉回的任何非空元素都将允许您向其添加选中的属性。
更具体地说,在 asp.net
中,当您创建复选框列时,如下所示
<asp:CheckBoxField Text="Hello" DataField="foo" />
它渲染 html 像这样:
<span class="aspNetDisabled">
<input id="gv_ctl00_0" type="checkbox" name="gv$ctl02$ctl00" disabled="disabled">
<label for="gv_ctl00_0">Hello</label>
</span>
几种可能性:
- 您获得的 ID 可能属于您要添加已检查属性的范围。
您正在设置要选中的复选框,但由于它已被禁用,因此它不会更新其状态- 好吧,看起来禁用的复选框可以更新其选中的属性。希望#1 是你的问题。
开始调试的一个好地方是将你的函数更改为这个
function UncheckedItemsCheckBox(CheckboxID) {
var checkbox = document.getElementById(CheckboxID);
alert(checkbox.checked); // <------- should display false, but will
// display undefined if this element is
// something other than a checkbox
checkbox.checked = false;
alert(checkbox.id + " : " + checkbox.name + " : " + checkbox.checked);
}
关于c# - Javascript 从 Asp.net GridView 取消选中复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8767647/