在VB.net應用程序,我有定期的ASP控件創建了多個複選框,即<asp:CheckBox ID="cb3" runat="server" Checked="true" />
如何設置ASP複選框狀態使用Javascript?
我試圖實施「全選/無」的功能,但我有一些問題。 Javascript不改變Internet Explorer(v9)中複選框的狀態。我試着調試與IE瀏覽器的開發工具和複選框肯定讓他們的checked
屬性設置爲true
。 (還試圖設置爲 「選中」。)下面是JS:
function setCheckboxes(state)
{
var inputs = document.getElementsByTagName("input");
for (var i in inputs)
{
if (inputs[i].type == "checkbox")
{
// this line is definitely executed on the checkboxes
inputs[i].checked = state;
// this doesn't work either
//inputs[i].checked = (state ? "checked" : "");
}
}
}
document.getElementById("cbSelectAll").onclick = function() {
setCheckboxes(true);
return false;
}
document.getElementById("cbSelectNone").onclick = function() {
setCheckboxes(false);
return false;
}
的第二個問題,這可能是相關的,發生在Firefox(V11)。上面的JS工作正常,並取消選擇複選框,但是在提交時它們被設置爲它們的初始狀態。通過點擊選擇和取消選擇正常,雖然正常。我該如何解決?
編輯:爲了說清楚,這是特別是.net的問題,而不僅僅是基本的HTML。我用複選框嘗試了一個基本頁面,IE(de)選擇它們就好了。
更新2:包括更多信息,因爲它可能是相關的。我剛查了一些東西,點擊複選框不會出現更改Internet Explorer中的狀態,但在提交其狀態時,已存儲。
我使用Telerik的網格視圖和數據綁定到它。這裏的ASPX代碼:
<telerik:RadGrid ID="gridContacts" runat="server" Skin="Office2007" GridLines="None" AutoGenerateColumns="False">
<MasterTableView>
<RowIndicatorColumn>
<HeaderStyle Width="20px" />
</RowIndicatorColumn>
<ExpandCollapseColumn>
<HeaderStyle Width="20px" />
</ExpandCollapseColumn>
<Columns>
<telerik:GridBoundColumn DataField="id" DataType="System.String" UniqueName="id" Visible="False">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="name" DataType="System.String" UniqueName="name" HeaderText="Name">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="email" DataType="System.String" UniqueName="email" Visible="False">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="sms" DataType="System.String" UniqueName="sms" Visible="False">
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn DataField="useemail" DataType="System.Boolean" UniqueName="useemail" HeaderText="Email">
<ItemTemplate>
<asp:CheckBox ID="cbEmail" runat="server" Checked='<%# Eval("useemail") %>' />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="usesms" DataType="System.Boolean" UniqueName="usesms" HeaderText="SMS">
<ItemTemplate>
<asp:CheckBox ID="cbSMS" runat="server" Checked='<%# Eval("usesms") %>' />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
<FilterMenu EnableTheming="True" Skin="Office2007">
<CollapseAnimation Duration="200" Type="OutQuint" />
</FilterMenu>
</telerik:RadGrid>
對於每個複選框,散發出來的HTML是這樣的:
<input name="ctl00$ContentPlaceHolder1$gridContacts$ctl00$ctl04$cbEmail"
class="Office2007 input" id="ctl00_ContentPlaceHolder1_gridContacts_ctl00_ctl04_cbEmail"
type="checkbox" CHECKED="checked" /><label class="Office2007 radfdCheckboxChecked"
for="ctl00_ContentPlaceHolder1_gridContacts_ctl00_ctl04_cbEmail" unselectable="on"> </label>
我在VS2008中設置了一個項目 - 我沒有這個問題。你的目標版本是什麼?你有任何事件必須檢查這些複選框嗎? – Snuffleupagus
@ user1090190我實際上使用VS2005(版本8.0.50727.867)和.NET版本2.0.50727 SP2。就我所知,在複選框上沒有事件。 – DisgruntledGoat
嗯,我似乎仍不能複製。你可以發佈更多的網頁,或者它是敏感信息嗎?還有其他的東西需要在這裏玩。 – Snuffleupagus