Не удается заставить работать jQuery и RadioButtonList - PullRequest
0 голосов
/ 30 августа 2010

Я пытаюсь заставить работать скрипт 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 ]

1 голос
/ 30 августа 2010

Спасибо, Ник, твой ответ получил меня там ... в конце концов:)

Ваш первый код

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

не будет работать вообще, давая мне 'undefined' в окне предупреждения.

Ваш второй код

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

работал на базовой странице asp.net, но не работал на странице Master / Child, которую я здесь использую. Я изменил это на

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

и работает нормально.

1 голос
/ 30 августа 2010

@ устарел / удален из селекторов атрибутов в jQuery 1.3, поэтому ваше первое посещение должно выглядеть следующим образом:

$(document).ready(function() {
  $("#btnSubmit").click(function() {
    alert($("#RadioButtonList1 input[checked]").val());
  });
});

Или чуть более упрощенно, используя селектор :checked :

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

Кроме того, вот то, о чем я думаю вы ищете в третьей попытке , просто как стартточка:)

...