雖然很糟糕,但卻試圖提高我的jQuery技能並努力解決這個問題。我有幾個複選框是從一個asp.net轉發器生成的,我試圖強制一次只檢查其中一個複選框。我可以在jsFiddle上做這個工作,但不是在我的解決方案中,任何人都可以看到任何突出的錯誤?複選框更改功能只能觸發一次
的jQuery:
$(document).ready(function() {
$('.menuBox input[type=checkbox]').change(function() {
$('.menuBox input[type=checkbox]').not(this).prop('checked', false);
});
});
HTML(由asp.net代碼生成):
<div class="menuBox">
<div class="col1">
<ul>
<li id="ctl00_liCategory" class="liCategory">
<input id="ctl00_chkCategory" type="checkbox" name="ctl00$chkCategory" onclick="javascript:setTimeout('__doPostBack(\'ctl00$chkCategory\',\'\')', 0)" />
<label for="ctl00_chkCategory" id="ctl00_lblCategory">first label</label>
</li>
<li id="ctl01_liCategory" class="liCategory">
<input id="ctl01_chkCategory" type="checkbox" name="ctl01$chkCategory" onclick="javascript:setTimeout('__doPostBack(\'ctl01$chkCategory\',\'\')', 0)" />
<label for="ctl01_chkCategory" id="ctl01_lblCategory">second label</label>
</li>
<li id="ctl02_liCategory" class="liCategory">
<input id="ctl02_chkCategory" type="checkbox" name="ctl02$chkCategory" onclick="javascript:setTimeout('__doPostBack(\'ctl02$chkCategory\',\'\')', 0)" />
<label for="ctl02_chkCategory" id="ctl02_lblCategory">third label</label>
</li>
</ul>
</div>
</div>
ASP.NET碼生成的HTML:
<div class="col1">
<ul>
<asp:Repeater runat="server" ID="rptrCategoriesCol1" OnItemDataBound="rptrCategories_ItemDataBound">
<ItemTemplate>
<li runat="server" id="liCategory" class="liCategory">
<asp:Checkbox runat="server" ID="chkCategory" AutoPostBack="true" OnCheckedChanged="FilterResults" CssClass="CategoryChkBox" />
<asp:Label runat="server" ID="lblCategory" AssociatedControlID="chkCategory" />
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
爲什麼不使用單選按鈕? – LcSalazar 2014-10-07 19:50:14
這不是一個答案,只是一個評論。你應該使用單選按鈕而不是複選框。 – Scott 2014-10-07 19:50:57
是的,這是我最初的想法,但我不能觸及這個特定的代碼,但謝謝你。 – MannfromReno 2014-10-07 19:52:27