无法让jQuery和RadioButtonList工作

时间:2010-08-30 09:55:43

标签: jquery radiobuttonlist

我正在试着让jQuery脚本正常工作,以便在RadioButtonList中获取所选值。当我无法运行脚本时,我已经做了通常的事情 - 将其他人剪切并粘贴到空白页面中,让它工作,然后复制到所需的页面。

然而,我尝试了三种不同的脚本,它们采用不同的方法来定义所选择的值,但是我无法使它们中的任何一种工作,即使我从中得到它们的某些网页上的评论似乎暗示它们正在为其他人工作。

此脚本抛出无法识别的表达式错误:

//In head with prior reference to local copy of jquery-1.4.1.js
<script language="javascript">
    $(document).ready(function() {
        $("#btnSubmit").click(function() {
            alert($("#RadioButtonList1").find("input[@checked]").val());
        });
    });
</script>

//In body
<asp:RadioButtonList ID="RadioButtonList1" runat="server">
    <asp:ListItem>1</asp:ListItem>
    <asp:ListItem>2</asp:ListItem>
   <asp:ListItem>3</asp:ListItem>
</asp:RadioButtonList>
 <input id="btnSubmit" type="button" value="Submit" />

在下面的代码中,警告框justs给出'undefined'(注意我已尝试使用远程引用和对jquery-1.4.1.js的本地副本的引用)

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <title></title>

  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
  <form id="form1" runat="server">
   <div>
    <asp:RadioButtonList ID="RadioButtonList1" runat="server">
        <asp:ListItem Text="Yes" Value="1"></asp:ListItem>
        <asp:ListItem Text="No" Value="2"></asp:ListItem>
    </asp:RadioButtonList>
   </div>
   <input type="button" id="btnTest" value="Uncheck" />
  </form>
</body>

<script type="text/javascript">

 $('#btnTest').click(function () {
    alert($('#<%=RadioButtonList1.ClientID %> input[type=radio]:checked').val());
 });

</script>

</html>

我还在基本的HTML页面(即不是asp.net)中尝试了以下内容,但它没有做任何事情

//In head
$("input[@name='option_layout']").change(
function()
{
    if ($("input[@name='option_layout']:checked").val())
        $(".group").toggleClass("group_vert");
    else
        $(".group").toggleClass("group_vert");
    $(this).blur();
}
);

//In body
<input type="radio" name="option_layout" value="0" checked="checked" />
<input type="radio" name="option_layout" value="1" />

我已经尝试将.change修改为.click,因为我知道IE中存在.change的错误,即使我在IE和Fiefox中都没有成功测试过。我也尝试将代码包装在$(document).ready(function()块中,但没有区别。我也尝试在函数的第一行添加一个警告框,但它再次抛出一个无法识别的表达式错误。

任何人都知道这里出了什么问题?

2 个答案:

答案 0 :(得分:1)

jQuery 1.3中@已被$(document).ready(function() { $("#btnSubmit").click(function() { alert($("#RadioButtonList1 input[checked]").val()); }); }); 弃用/删除,因此您的首次参与应如下所示:

$(function() {
  $("#btnSubmit").click(function() {
    alert($("#RadioButtonList1 :checked").val());
  });
});

或者使用attribute selectors进行简化:

{{1}}

另外,the :checked selector,作为起点:)

答案 1 :(得分:1)

谢谢,尼克,你的答案让我在那里......最终:)

您的第一个代码

alert($("#RadioButtonList1 input[checked]").val()); 

根本不起作用,在警告框中给我“未定义”。

你的第二个代码

alert($("#RadioButtonList1 :checked").val());

在一个基本的asp.net页面中工作但不能在我在这里使用的主/子页面中工作。我把它改成了

alert($("#<%=RadioButtonList1.ClientID %>").find("input[checked]").val());

它工作正常。