![](/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.