我目前正在使用定义为:
的单选按钮控件<asp:RadioButtonList ID="rbQ2" CellSpacing="10" runat="server" class="rbQ2"
CssClass="radioButtonList" RepeatDirection="Horizontal" RepeatLayout="Table"
onclick="javascript: SetQ2DetailVisibility();">
<asp:ListItem>Yes</asp:ListItem>
<asp:ListItem>No</asp:ListItem>
</asp:RadioButtonList>
我正在使用一个功能来根据所选的单选按钮值禁用/启用详细数据。当我使用客户端ID作为选择器来查找单选按钮的选定值时,变量“value”被指定为“yes”或“no”,具体取决于单选按钮的Selected Value:
function SetQ2DetailVisibility() {
var value = $("#<%=rbQ2.ClientID%>").find(":checked").val();
if (value == "Yes") {
ShowQuestionDetail("#q2detail");
}
else {
HideQuestionDetail("#q2detail");
}
}
但是当我使用class属性作为选择器时,值被赋值为“undefined”:
function SetQ2DetailVisibility() {
var value = $(".rbQ2").find(":checked").val();
if (value == "Yes") {
ShowQuestionDetail("#q2detail");
}
else {
HideQuestionDetail("#q2detail");
}
}
为什么会这样?
答案 0 :(得分:0)
您还没有为ListItem分配值。您正试图比较文本。
试试这个:
function SetQ2DetailVisibility() {
var value = $("#<%=rbQ2.ClientID%>").find(":checked").text();
if (value === "Yes") {
ShowQuestionDetail("#q2detail");
}
else {
HideQuestionDetail("#q2detail");
}
}
答案 1 :(得分:0)
网络表单的RadioButton实现实际上在单选按钮旁边创建了一个跨区,这是放置文本的位置。因此,您需要抓住下一个兄弟跨度并将值拉到那里。
如果您将值作为值属性添加到列表项中,则可以继续使用代码:
<asp:ListItem Value="Yes">Yes</asp:ListItem>
或者,您可以这样做(内部内容仍然用作Text
属性):
<asp:ListItem Value="Yes" Text="Yes" />
Value
是提交给服务器的值,Text
是向用户显示的内容。
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listitem(v=vs.110).aspx