JQuery: как получить выбранное значение радиокнопки? - PullRequest
43 голосов
/ 10 ноября 2010

Как установить значение по умолчанию для невыбранного переключателя на 0?

У меня есть следующий HTML:

<input type="radio" name="myradiobutton" value="1" />1
<input type="radio" name="myradiobutton" value="2" />2
<input type="radio" name="myradiobutton" value="3" />3

И у меня есть следующий код, чтобы получить значение выбранный переключатель

var radio_button_value $('input[name=myradiobutton]:radio').click(function() {var value = $(this).val();});

Проблема в том, что я хочу установить значение от radio_button_value до 0 по умолчанию, если ничего не выбрано . Как мне это сделать?

Я в основном хочу сделать псевдо-код ниже (но это не работает)

var radio_button_value $('input[name=myradiobutton]:radio').click(function() { 
if set
  return $(this).val();
else
  return 0;
});

UPDATE

Кажется, я не понимаю, о чем я прошу.

Что я хочу сделать, когда страница загружается (до того, как у пользователя была возможность даже выбрать переключатель), мне нужна функция, которая будет возвращать 0 для значения переключателя.

Затем, когда пользователь выбрал переключатель, эта ЖЕ функция возвратит выбранное значение переключателя.

Имеет смысл?

Ответы [ 11 ]

91 голосов
/ 10 ноября 2010

$('input[name=myradiobutton]:radio:checked') выдаст вам выбранную радиокнопку $('input[name=myradiobutton]:radio:not(:checked)') выдаст вам невыбранные радиокнопки

С помощью этого вы можете сделать это

$('input[name=myradiobutton]:radio:not(:checked)').val("0");

Обновление: После прочтения вашего обновления я думаю, что понимаю, что вы захотите сделать что-то вроде этого

var myRadioValue;

function radioValue(jqRadioButton){
  if (jqRadioButton.length) {
    myRadioValue = jqRadioButton.val();
  }
  else {
    myRadioValue = 0;
  }
}

$(document).ready(function () {
  $('input[name=myradiobutton]:radio').click(function () {   //Hook the click event for selected elements
    radioValue($('input[name=myradiobutton]:radio:checked'));
  });

  radioValue($('input[name=myradiobutton]:radio:checked')); //check for value on page load
});
18 голосов
/ 10 ноября 2010

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

function getRadioValue () {
    if( $('input[name=myradiobutton]:radio:checked').length > 0 ) {
        return $('input[name=myradiobutton]:radio:checked').val();
    }
    else {
        return 0;
    }
}

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

$(document).ready( function() {
    // Value when you load the page for the first time
    // Will return 0 the first time it's called
    var radio_button_value = getRadioValue();

    $('input[name=myradiobutton]:radio').click( function() {
        // Will get the newly selected value
        radio_button_value = getRadioValue();
    });
}
9 голосов
/ 26 августа 2013

Запустится, как только страница загрузится.Вы можете держать его под некоторыми событиями, такими как нажатие кнопки

$("#btn").click(function() { 
var val= $('input[type="radio"]:checked').val();
});
6 голосов
/ 06 марта 2013
jQuery("input:radio[name=myradiobutton]:checked").val();
3 голосов
/ 18 июня 2015

Чтобы получить значение выбранной радиокнопки, используйте RadioButtonName и идентификатор формы, содержащий RadioButton.

$('input[name=radioName]:checked', '#myForm').val()

ИЛИ только

$('form input[type=radio]:checked').val();
3 голосов
/ 22 июля 2013

Этот метод Jquery возвращает значение по умолчанию 0 при загрузке страницы ...

$('input[type="radio"]:checked').val();
3 голосов
/ 27 февраля 2013

Я знаю, что это старый вопрос, но я нахожу, что ответов недостаточно,

Самый простой способ сделать это - использовать этот код

$(".myRadio").click(function() {
alert($(this).val());   
});

: -)

Входные данные вашей формы должны выглядеть следующим образом

<input type="radio" value="40000" name="pay"  class="myRadio" />
<label for="40000">40000</label>
3 голосов
/ 10 ноября 2010

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

<input type="radio" name="myradiobutton" value="0" checked="checked" style="display:none;" />
<input type="radio" name="myradiobutton" value="1" />1
<input type="radio" name="myradiobutton" value="2" />2
<input type="radio" name="myradiobutton" value="3" />3

Если вы не можете напрямую изменить свой HTML, вы можете добавить его через скрипт:

$(function() {
    $('input[name=myradiobutton]:radio:first').before('<input type="radio" name="myradiobutton" value="0" checked="checked" style="display:none;" />');
});

Вот демонстрация этого: http://jsfiddle.net/Ender/LwPCv/

2 голосов
/ 15 мая 2014

Эта работа для меня, надеюсь, это поможет: чтобы получить выбранное значение радиостанции, вы должны использовать имя отношения в качестве селектора, как этотв вашем случае это было бы "myradiobutton"

selectedVal = $('input[name="myradiobutton"]:checked').val();
2 голосов
/ 10 ноября 2010

Вы действительно должны использовать флажки, если будет экземпляр, где что-то не выбрано.

в соответствии с W3C

Если в наборе нет переключателя, разделяющегото же имя элемента управления изначально включено, поведение пользовательского агента для выбора изначально включенного элемента управления не определено.Заметка.Поскольку существующие реализации обрабатывают этот случай по-разному, текущая спецификация отличается от RFC 1866 (раздел 8.1.2.4 [RFC1866]), в котором говорится:

Всегда проверяется ровно одна из переключателей в наборе.Если ни один из элементов набора переключателей не указывает `CHECKED ', то пользовательский агент должен сначала проверить первую переключатель набора.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...