使用Jquery通过类查找asp.net Radio Button Control的选定值

时间:2014-08-22 18:51:08

标签: jquery html asp.net

我目前正在使用定义为:

的单选按钮控件
<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");
    }
}

为什么会这样?

2 个答案:

答案 0 :(得分:0)

您还没有为Lis​​tItem分配值。您正试图比较文本。

试试这个:

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