![](/img/trans.png)
[英]jQuery/Javascript: Click event on a checkbox and the 'checked' attribute
[英]On Checkbox click event, Unable to remove checked="checked' attribute
我的视图中有一个“ jQuery对话框”,在此对话框中有一个UL LI列表,该列表已转换为树视图。 我通过在HTML Text Writer帮助器中添加checked属性来保留先前的复选框选中的内容。 我想做的是一旦取消选中选中的属性,就将其删除。 我可以触发该事件并获取值,例如true或false以进行检查或取消选中,但是如果被选中,则无法成功删除被选中的属性。 DOM仍具有先前的检查状态。
HTML编写器
InUl(() => locations.ForEach(location => InLi(() =>
{
var children = this.childrenRenderer(location);
bool childStatus = !(children != null && children.Count() > 0);
if (childStatus)
{
writer.AddAttribute("type", "checkbox");
writer.AddAttribute("value", urlRenderer(location));
writer.AddAttribute("id", htmlPrefix + urlRenderer(location));
writer.AddAttribute("onclick", "handleClick(this)");
if (keys != null)
{
if (keys.Contains(Convert.ToInt32(urlRenderer(location))))
{
writer.AddAttribute("checked", "checked");
}
}
writer.RenderBeginTag("input");
}
writer.Write(locationRenderer(location));
if (childStatus)
{
writer.RenderEndTag();
}
RenderLocations(children);
})));
JS功能
function handleClick(e) {
alert("Click, new value = " + e.checked);
var $this = $(this);
if (e.checked = false) {
$this.removeAttr('checked');
}
}
如果我取消选中一个复选框,则下面的函数仍会给出旧的复选框,而该复选框现在未被选中:
$("#errorCodes input:checkbox:checked").each(function () {
var v = $(this).val();
a.push(v);
if (errorTextArea.length > 0) {
errorTextArea = errorTextArea + " | ";
}
errorTextArea = errorTextArea + v;
});
您的代码中有一个简单的错误:
if (e.checked = false)
应该读
if (e.checked == false)
尝试这个:
function handleClick(e) {
alert("Click, new value = " + e.target.checked);
if (e.target.checked == false) {
e.target.removeAttr('checked');
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.