Проверьте, установлен ли определенный переключатель - PullRequest
33 голосов
/ 03 февраля 2010

У меня проблемы с просмотром документации по jQuery.Я просто пытаюсь вернуть true / false в одном из моих методов jquery, в зависимости от проверки определенной кнопки и, если она выбрана или нет

Я пробовал несколько вещей, но не смог получить этоправильно:

<input type="radio" runat="server" name="testGroup" id="test1" /><label for="<%=test1.ClientID %>" style="cursor:hand" runat="server">Test1</label>
<input type="radio" runat="server" name="testGroup" id="test2" /><label for="<%=test2.ClientID %>" style="cursor:hand" runat="server">Test2</label>
<input type="radio" runat="server" name="testGroup" id="test3" /> <label for="<%=test3.ClientID %>" style="cursor:hand">Test3</label>

и в моем методе у меня есть это:

return $("input[@name='test2']:checked");

Я получаю неопределенное на $("input[@name='test2']:checked");

ОБНОВЛЕНО:

пример:

<input type="radio" runat="server" name="radioGroup"  id="payPalRadioButton" value="paypalSelected" /> 

это возвращает 'undefined' по-прежнему:

$("input[@name=radioGroup]:checked").attr('payPalRadioButton'); 

Если я попробую это, я получу 'false', даже если я выберу переключатель:

$('input:radio[name=radioGroup]:checked').val() == 'paypalSelected'

Ответы [ 7 ]

72 голосов
/ 03 февраля 2010

Ваш селектор не выберет поле ввода, и если он это сделает, он вернет объект jQuery. Попробуйте это:

$('#test2').is(':checked'); 
6 голосов
/ 03 февраля 2010

Я думаю, что вы используете неправильный подход. Вы должны установить атрибут value ваших элементов ввода. Проверьте документы для .val () для примеров установки и возврата .val () элементов ввода.

т.

<input type="radio" runat="server" name="testGroup" value="test2" />

return $('input:radio[name=testGroup]:checked').val() == 'test2';
4 голосов
/ 03 февраля 2010

1. Вам больше не нужен префикс @ для имен атрибутов:

http://api.jquery.com/category/selectors/attribute-selectors/:

Примечание: в стиле jQuery 1.3 [@attr] селекторы были удалены (они были ранее не рекомендуется в jQuery 1.2). Просто удалите символ «@» из своего селекторы, чтобы заставить их работать еще раз.

2.Вы селектор запрашивает переключатели по name, но этот атрибут не определен в вашей структуре HTML.

0 голосов
/ 22 января 2019

Только что нашел правильное рабочее решение для других парней,

// Returns true or false based on the radio button checked
$('#test1').prop('checked')


$('body').on('change','input[type="radio"]',function () {
alert('Test1 checked = ' + $('#test1').prop('checked') + '. Test2 checked = ' + $('#test2').prop('checked') + '. Test3 checked = ' + $('#test3').prop('checked'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="radio" runat="server" name="testGroup" id="test1" /><label for="<%=test1.ClientID %>" style="cursor:hand" runat="server">Test1</label>

<input type="radio" runat="server" name="testGroup" id="test2" /><label for="<%=test2.ClientID %>" style="cursor:hand" runat="server">Test2</label>

<input type="radio" runat="server" name="testGroup" id="test3" /> <label for="<%=test3.ClientID %>" style="cursor:hand">Test3</label>

и в вашем методе вы можете использовать как

return $('#test2').prop('checked');
0 голосов
/ 04 января 2016

$("input[@name='<%=test2.ClientID%>']:checked");

используйте это, и здесь ClientID получает случайный идентификатор, созданный .net.

0 голосов
/ 04 февраля 2010

ПОЧЕМУ беспокоятся все модные селекторы? Если вы используете эти атрибуты id = "" правильно, то 'test2' должен быть единственным тегом с этим идентификатором на странице, тогда логическое свойство .checked сообщит вам, проверено это или нет:

if ($('test2').checked) {
    ....
}

Вы также не установили никаких значений для этих переключателей, поэтому независимо от того, какую кнопку вы нажимаете, вы просто получите пустую строку "testGroup =", отправленную на сервер.

0 голосов
/ 03 февраля 2010

Вы должны удалить «@» перед «именем»; это больше не нужно (для текущих версий jQuery).

Вы хотите вернуть все отмеченные элементы с именем «test2», но у вас нет элементов с таким именем, вы используете id из «test2».

Если вы собираетесь использовать идентификаторы, просто попробуйте:

return $('#test2').attr('checked');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...