簡體   English   中英

在復選框單擊事件上,無法刪除checked =“ checked'屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM