Радиопереключатель в asp с jQuery

0

это работает:

<script>
    $("input:radio").change(function () {
        alert($(this).attr("name"));
    });
</script>

результат: ctl00 $ ctl00 $ cphBody $ cphBody $ RS_rbtItemGroup

но это не работает:

<script>
    $("input[name=ctl00$ctl00$cphBody$cphBody$RS_rbtItemGroup]:radio").change(function () {
        alert($(this).attr("name"));
    });
</script>

Может ли кто-нибудь мне помочь?

Теги:
radio-button

2 ответа

1
Лучший ответ

Поскольку у вас есть "$" в имени, вам нужно добавить одинарные кавычки в запрос имени. Попробуй это:

<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
    $(document).ready(function() {
        $("input[name='ctl00$ctl00$cphBody$cphBody$RS_rbtItemGroup']:radio").change(function () {
            alert($(this).attr("name"));
        });
    });
</script>
</head>
<body>
    <input type='radio' name='ctl00$ctl00$cphBody$cphBody$RS_rbtItemGroup' value='yes'>Yes</input>
    <input type='radio' name='ctl00$ctl00$cphBody$cphBody$RS_rbtItemGroup' value='no'>No</input>
</body>
</html>
  • 0
    Спасибо, Вы упомянули тонкую точку.
1

API-интерфейс jQuery говорит, что атрибут равен селектору, который принимает некотированное одиночное слово или строку с кавычками. К сожалению, он рассматривает символ $ как символ без слова, поэтому вам нужно указать значение атрибута имени в кавычках:

<script>
    $("input[name='ctl00$ctl00$cphBody$cphBody$RS_rbtItemGroup']:radio").change(function () {
        alert($(this).attr("name"));
    });
</script>

Тем не менее, я рекомендую фактически использовать конец атрибута с селектором, поскольку первая часть вашего имени генерируется.NET и может потенциально измениться, если вы измените свой макет:

<script>
    $("input[name$='$RS_rbtItemGroup']:radio").change(function () {
        alert($(this).attr("name"));
    });
</script>
  • 0
    Спасибо, но мой макет не изменится, и я не знаю, почему, когда я добавлю ClientIDMode = "Static" к своим элементам управления, он НЕ будет отображаться как name = "$ RS_rbtItemGroup". это будет name = "ctl00 $ ctl00 $ cphBody $ cphBody $ RS_rbtItemGroup", поэтому
  • 1
    Мой рекомендуемый код будет работать с name="tl00$ctl00$cphBody$cphBody$RS_rbtItemGroup" потому что он использует $= вместо = который проверяет, чем заканчивается атрибут, а не совпадает со всем атрибутом. Я считаю, что это лучший вариант, потому что .NET может добавить что-то кроме ctl00$ctl00$cphBody$cphBody$ в начало атрибута.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню