Ответ 1
Ваш селектор не будет выбирать поле ввода, и если он это сделает, он вернет объект jQuery. Попробуйте следующее:
$('#test2').is(':checked');
У меня возникают проблемы после просмотра документов 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'
Ваш селектор не будет выбирать поле ввода, и если он это сделает, он вернет объект jQuery. Попробуйте следующее:
$('#test2').is(':checked');
Я думаю, вы используете неправильный подход. Вы должны установить атрибут value
для ваших элементов ввода. Проверьте документы для .val() для примеров установки и возврата элементов ввода .val().
т.
<input type="radio" runat="server" name="testGroup" value="test2" />
return $('input:radio[name=testGroup]:checked').val() == 'test2';
1. Вам больше не нужен префикс @
для имен атрибутов:
http://api.jquery.com/category/selectors/attribute-selectors/:
Примечание. В стиле jQuery 1.3 [@attr] селектора были удалены (они были ранее устаревший в jQuery 1.2). Просто удалите символ @с вашего селекторов, чтобы заставить их работать еще раз.
2. Ваш селектор запрашивает радиокнопки name
, но этот атрибут не определен в вашей структуре HTML.
Вы должны удалить "@" перед "именем"; он больше не нужен (для текущих версий jQuery).
Вы хотите вернуть все проверенные элементы с именем "test2", но у вас нет каких-либо элементов с этим именем, вы используете id of test2.
Если вы собираетесь использовать идентификаторы, просто попробуйте:
return $('#test2').attr('checked');
ПОЧЕМУ ПОТЕРЯТЬСЯ С ПОМОЩЬЮ ВЫСОКИХ СЕКСОРОВ? Если вы правильно используете эти атрибуты id = "", тогда 'test2' должен быть единственным тегом с этим идентификатором на странице, тогда свойство .checked boolean сообщит вам, было ли оно проверено или нет:
if ($('test2').checked) {
....
}
Вы также не установили никаких значений для этих переключателей, поэтому независимо от того, какую кнопку вы выберете, вы просто получите пустую "testGroup =", отправленную на сервер.
$("input[@name='<%=test2.ClientID%>']:checked");
используйте это и здесь ClientID извлекает случайный идентификатор, созданный .net.
Просто нашел правильное рабочее решение для других парней,
// 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>