2013-12-03 1 views
0

В приведенной ниже функции я хочу показать и скрыть элемент на основе других параметров, выбранных на странице (переключатели). Проблема в том, что var complianceMember всегда возвращает первое значение для набора переключателей, это часть, а не выбранное значение, почему это? Две другие переменные возвращают правильные значения.jquery .val() не возвращает правильное значение

$(document).ready(function() { 
    $('input[name="waste-management-plan"]').change(function() { 

     var producerType = $('input[name="producertype"]').val(); 
     var complianceMember = $('input[name="compliance-member"]').val(); 

     if ($(this).val() == 'Y' && complianceMember == 'Y' && producerType == 'both') { 
      $('.producerOp3').show(); 
     } else { 
      $('.producerOp3').hide(); 
      console.log($(this).val(),complianceMember,producerType); 
     } 
    }); 
}); 

ответ

4

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

var complianceMember = $('input[name="compliance-member"]:checked').val(); 
+0

Это отлично работает, спасибо. Из интереса, почему одна группа возвращает правильное значение, а другая нет? Тот, который возвращает правильное значение, имеет две опции, а переменная, возвращающая неправильное значение, имеет 3 варианта. Разве это имеет значение? –

+1

@PaulColinRedmond ли 'продюсерский тип 'также является радио-группой? –

+1

@PaulColinRedmond, если это так, вам придется использовать фильтр 'checked' там тоже ... иначе он должен потерпеть неудачу –

0

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

var complianceMember = $('input[name="compliance-member"]:checked').val(); 
+1

Спасибо! Это сработало. Кто-то добрался до вас. –

+0

@PaulColinRedmond Когда-то бывает :) для вашего [комментария] (http://stackoverflow.com/questions/20348052/jquery-val-not-returning-correct-value#comment30373411_20348088), я думаю, для 'продюсера 'вы, возможно, нажали «первая радиокнопка», и поэтому вы поняли это правильно. '$ ('input [name =" производительtype "]'). val();' попробуйте выбрать оба параметра, которые он будет **, всегда дает значение первого переключателя. ** – Praveen

+0

Да, вы правы, вот что произошло ! Еще раз спасибо. –

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