2013-05-02 2 views
0

Я хочу создать форму с переключателями, где мне нужно определить, выбрано ли все радио.jQuery detect select в переключателе

Это очень простая функция. Замена. В моей ситуации:

$('input:radio').change(function() { 
    alert($('[name|="pyt10"]:checked').val() + "/" + $('[name|="pyt11"]:checked').val() + "/"+ 
}) 

Но вот небольшая проблема - у меня есть 3 группы радиостанций. Когда я выбираю первую радиостанцию, предупреждение показывает мне, что все поля обнулены, после второго выбора первого радио имеет значение, но второе по-прежнему не определено, и так далее.

Это означает, что мое предупреждение показывает значение радио до изменения, а не после.

Что я должен сделать, чтобы записать значение радио после выбора?

+0

Поскольку вы используете ': checked', он будет выбирать только элемент по имени, если он установлен. Вы можете снять его. – Ian

+0

Я хочу принять проверочное значение, но в чем проблема - радио не выбрано - значение по умолчанию «undefined», я выбираю его значение меняется на «1», но предупреждение все еще показывает «undefined», после второго выбора оно показывает «1» ... Значение оповещения на один шаг позади, оно показывает значение до изменений ... – Ilkar

ответ

2

Для вашей насущной проблемой "где мне нужно, чтобы обнаружить, если все радио выбрал пчела", вы можете использовать это:

var radios = $('input:radio').on("click", function() { 
    alert(radios.length === radios.filter(":checked").length); 
}); 

DEMO:http://jsfiddle.net/VWrzN/1/

0

Вы не далеко выкл. вместо того, чтобы предупреждать

$('[name|="py10"]:checked 

Убедитесь, что он проверил

if ($('[name|="py10"]').is(':checked')) { 

} 
1

Вы можете также цикл через входы:

$('input:radio').change(function(){ 
     myArray = new Array(); 
     $('input:radio').each(function(){ 
      this.checked ? myArray.push(this.value) : myArray.push("notChecked"); 
     }) 
     alert(myArray.join("/")) 
    }) 
0

Другой подход: если вы обернули (или можете обернуть) радиоприемник групп с тегом формы вы можете проверить, установлено ли столько значений, как группы:

$('#radios').on('change', ':radio', function() { 
    var form = $(this).closest('form'), 
     full = form.serializeArray().length == 2; 
    console.log(full); 
}); 

jsfiddle

form.serializeArray() возвращает массив с каждым значением радио группы, если одна радио кнопки этой группы проверяются.

0

Глядя просто дремлют в JavaScript у вас есть ошибка синтаксиса, так как вы не закрыли его с задней )

Попробуйте следующее

$('input:radio').change(function() { 
var $this = $(this); 
var group1Val = $('[name|="pyt10"]:checked').val(); 
var group2Val = $('[name|="pyt11"]:checked').val(); 
var group3Val = $('[name|="pyt12"]:checked').val(); 


$('.output').html(
    'Value of radio button clicked: '+ $this.val() + '<br><br>' 
    + 'Value of radio button checked for group 1: ' 
    + group1Val + ' <br>' 
    + 'Value of radio button checked for group 2: ' 
    + group2Val + ' <br>' 
    + 'Value of radio button checked for group 3: ' 
    + group3Val + ' <br>' 
); 

//alert($('[name|="pyt10"]:checked').val() + "/" + $('[name|="pyt11"]:checked').val() + "/"+ 
}); 

Вот JSFIDDLE для выше.

Смежные вопросы