Проверьте, установлен ли конкретный переключатель

У меня возникают проблемы после просмотра документов 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");

Я получаю undefined на $("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'

Ответ 1

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

$('#test2').is(':checked'); 

Ответ 2

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

т.

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

return $('input:radio[name=testGroup]:checked').val() == 'test2';

Ответ 3

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

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

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

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

Ответ 4

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

Вы хотите вернуть все проверенные элементы с именем "test2", но у вас нет каких-либо элементов с этим именем, вы используете id of test2.

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

return $('#test2').attr('checked');

Ответ 5

ПОЧЕМУ ПОТЕРЯТЬСЯ С ПОМОЩЬЮ ВЫСОКИХ СЕКСОРОВ? Если вы правильно используете эти атрибуты id = "", тогда 'test2' должен быть единственным тегом с этим идентификатором на странице, тогда свойство .checked boolean сообщит вам, было ли оно проверено или нет:

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

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

Ответ 6

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

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

Ответ 7

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

// 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>