簡體   English   中英

如何檢查具有布爾值的復選框

[英]How to check a checkbox with boolean values

因此,HTML規范要求您應將一個checked屬性添加到<input type="checkbox">標記中,以將其標記為選中狀態。 但是我只有一個布爾值truefalse

按照設計,我無法在布爾值解析為html之前添加任何邏輯:(。是否可以僅使用html或js檢查加載時具有布爾值的Checkbox?我嘗試了以下操作,但是onload似乎不會觸發:

<input type="checkbox" onload="javascript:this.checked=true" />

我知道我可以在jQuery中執行以下操作:

$("[checked='false']").prop('checked',false)

我正在尋找一種解決問題的優雅方法。 這必須解析整個DOM-Tree,並且會減慢我的頁面的速度。


編輯(試圖解釋):

在我的公司中,有一個應用程序按設計執行以下操作:

 <input type="checkbox" checked="%IsValide%" >

然后,服務器會自動用數據庫值替換%IsValide% var。 這里是對還是錯。 但是,即使該值為false,也始終選中該復選框。 我知道這是由於html5的設計引起的:checked =“ true”和checked =“ false”會將復選框始終標記為已選中。

現在,我正在尋找一種解決方案,以使用%IsValide%的true或false值來使用javascript(或什至更好的是使用html)正確選中該框。 我可以在html標記的任何位置使用%IsValide% 例如:

<input type="checkbox" onload="javascript:this.checked=%IsValide%" /> 

但是我無法在將其解析為HTML之前添加邏輯,如下所示:

if(%IsValide%) {
 %IsValide%="checked";
}
else {
 %IsValide%="";
}

我想了解您的要求。 我認為您可以使用一些簡單的javascript完成它:

document.getElementById("yourCheckBoxId").checked = false; //this case it sets checked to false you can also do true

在頁面加載時進行檢查:

<body onload='document.getElementById("yourCheckBoxId").checked = true;'>

或避免body的onload屬性進行檢查:

<input type="checkbox" id="yourCheckBoxId" checked>

然后,您只需使用javascript進行更改即可。

我的另一個猜測是您要更改復選框的值嗎? 你是? 在我的答案下方發表評論,說我不明白您的要求。 希望這可以幫助! 這是我的參考來源: http : //www.w3schools.com/jsref/prop_checkbox_checked.asp

如您所見,如果您公司的應用程序設置了checked="true"checked="false" ,那么這將無關緊要,因為checked是一個布爾屬性,並且“此布爾屬性的存在指示默認情況下該控件處於選中狀態”,並且該復選框將始終處於選中狀態。

這應該解決它:

$('input[checked="false"]').prop('checked',false)

jsFiddle示例

我認為最終您會以錯誤的方式進行操作,但是,如果您沒有像我所說的那樣沒有其他選擇 ,那么我認為最終(在性能方面)最好的做法是在輸入中添加一個類(對或錯)

<input type="checkbox" class="tocheck-true"></input>
<input type="checkbox" class="tocheck-false"></input>

然后查找該類:

$("input.tocheck-true").prop("checked",true);

http://jsfiddle.net/mu81yz7y/

因為我們僅在搜索具有該CSS類的輸入,所以這應該表現得很好。

但是,再次,這似乎是一個完整的hack。 如果您問“如何使用膠帶將發動機固定到汽車車身上”,也許您應該停下來看看是否應該這個問題。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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