2010-11-09 8 views
43

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

У меня есть следующий 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 в случае ничего не найдено. Как мне это сделать?

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

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

UPDATE

Там, кажется, путаница на то, что я прошу.

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

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

Имеют смысл?

+1

Я не понимаю этого. Конечно, если вы нажали на переключатель, один из них должен быть выбран?В каком контексте вам это нужно? – lonesomeday

+0

Я хочу установить значение по умолчанию 0, чтобы при загрузке страницы, прежде чем пользователь имел возможность выбрать радиокнопку, моя функция вернет 0. Затем, как только пользователь выберет радиокнопку, он вернет значение выбранный атрибут. Имеют смысл? – StaceyH

+1

Просто. Таким образом, у вас есть функция (не вызываемая «щелчком» на переключателе), которая должна знать, есть ли выбранный ящик или нет? – lonesomeday

ответ

3

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

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

+0

Sneaky! Мне это нравится. –

+0

По какой-то причине это фактически НЕ работает. Это потому, что я использую метод **. Click **, а значение по умолчанию не «нажимается». – StaceyH

+0

После щелчка на значении сообщенное значение будет значением элемента, который был просто нажат. См. Это измененное демо: http://jsfiddle.net/Ender/z52PS/ – Ender

90

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

Используя это вы c сделать это

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

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

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 
}); 
+0

Но переключатель не был выбран YET. Таким образом, это не будет работать в одиночку. – StaceyH

+0

@StaceyH ... Когда вы хотите сделать это? OnSubmit формы? –

+0

@StaceyH ... Если вам нужен обновленный ответ –

18

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

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

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

$(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(); 
    }); 
} 
2

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

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

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

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

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

3

Я знаю, что это старый вопрос, но я считаю, что ответы не достаточно достаточными полномочиями

Чистейшая способ сделать это, чтобы использовать этот код

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

:-)

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

<input type="radio" value="40000" name="pay" class="myRadio" /> 
<label for="40000">40000</label> 
+0

определенно не чистый вариант, но он работает. +1 – Kurkula

6
jQuery("input:radio[name=myradiobutton]:checked").val(); 
+1

Я думаю, что это предложение было включено в более ранний ответ ... – alexwhan

3

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

$('input[type="radio"]:checked').val(); 
9

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

$("#btn").click(function() { 
var val= $('input[type="radio"]:checked').val(); 
}); 
2

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

selectedVal = $('input[name="radio_name"]:checked').val(); 

selectedVal будет иметь требуемое значение, измените radio_name в соответствии с вашими, в вашем случае это было б «myradiobutton»

selectedVal = $('input[name="myradiobutton"]:checked').val(); 
-1

для радиокнопки использовать следующий скрипт:

var myRadio = $('input[name=meme_wall_share]'); 
var checkedValue = myRadio.filter(':checked').val(); 
+0

Извините, но этот способ не работает. – Pablo

3

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

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

ИЛИ лишь

$('form input[type=radio]:checked').val(); 
Смежные вопросы