我的视图中有一个Jquery对话框,在这个对话框中有一个UL LI列表,它被转换为树视图。我通过在HTML Text Writer帮助器中添加checked属性来保留先前复选框选中的选项。我想要做的是取消选中后检查属性。我可以触发事件并获取值为true或false以进行检查或取消选中,但是如果选中该属性,则无法成功删除已检查的属性。 DOM仍然具有先前检查的状态。
HTML Writer
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;
});
答案 0 :(得分:0)
您的代码中有一个简单的错误:
if (e.checked = false)
应该阅读
if (e.checked == false)
答案 1 :(得分:0)
试试这个:
function handleClick(e) {
alert("Click, new value = " + e.target.checked);
if (e.target.checked == false) {
e.target.removeAttr('checked');
}
}