【发布时间】:2013-05-18 17:18:51
【问题描述】:
我在一个隐藏的 div 中有一组表单元素,如下所示:
<div id="jDivUpdateFolder" style="display:none;">
<asp:TextBox ID="txtEditFolderName" runat="server"></asp:TextBox><br />
<asp:TextBox ID="txtEditFolderDesc" runat="server" TextMode="MultiLine"></asp:TextBox><br />
<asp:FileUpload ID="fuEditPhoto" runat="server" /><br />
<asp:DropDownList ID="ddlEditContentOrder" runat="server">
<asp:ListItem Value="0" Text="Ascending"></asp:ListItem>
<asp:ListItem Value="1" Text="Descending"></asp:ListItem>
</asp:DropDownList><br />
<asp:CheckBox ID="chkEditIsActive" runat="server" Text="Active" /><br />
<asp:CheckBox ID="chkEditShowOnHome" runat="server" Text="Show on HomePage" /><br />
<asp:LinkButton CssClass="anchorbutton green" ID="btnSaveEditFolder" Text="Save" runat="server"></asp:LinkButton>
我通过 jQuery 中的一个函数来切换这个 div 的可见性(为了简单起见,这里不包括它)
当使用btnSaveEditFolder 的click 事件提交表单时,我可以正确检索TextBoxes、FileUpload 控件和DropDownList 的所有值。但不知何故,复选框总是返回 false。我要疯了。。
Protected Sub btnSaveEditFolder_Click(sender As Object, e As System.EventArgs) Handles btnSaveEditFolder.Click
Dim fID As Integer = Convert.ToInt32(txtFolderID.Value.Trim) ' value is good
Dim fname As String = txtEditFolderName.Text.Trim ' value is good
Dim fdesc As String = txtEditFolderDesc.Text.Trim ' value is good
Dim order As String = IIf(ddlEditContentOrder.SelectedItem.Value = "0", "Asc", "Desc") ' value is good
Dim isactive As Boolean = IIf(chkEditIsActive.Checked, True, False) ' ## ALWAYS FALSE
Dim isvisible As Boolean = IIf(chkEditShowOnHome.Checked, True, False) ' ## ALWAYS FALSE
End Sub
当我删除样式 display:block; 并且表单在页面上可见时,它们会返回正确的值(如果选中则返回 true,否则返回 false..)
有人遇到过这样的问题吗?
【问题讨论】:
-
您能否发布有关如何更改复选框值的代码?如果这是隐藏的,您可能会使用 javascript,对吗?
-
是的,我使用 javascript 但只是隐藏/显示 div 本身。我没有任何客户端代码来选中/取消选中复选框。
-
有趣的是,我将上面的代码复制并粘贴到测试页面上,两个复选框都返回了预期值。
标签: javascript asp.net css vb.net webforms