2016-04-19 3 views
2

Я использую Laravel с некоторым jQuery для веб-приложения. Когда я отправляю пустую форму, я перенаправляюсь обратно на страницу со старыми значениями, заполненными (form model binding), которые все работают так, как ожидалось.jQuery выбранное значение всегда 0

Проблема в части jQuery. У меня есть несколько разделов, которые не отображаются, когда значение радиогруппы равно 0 (непроверено) и отображается, когда оно изменяется на 1 (отмечено). Это отлично работает, когда я заполняю страницу, но она ошибочно, когда я перенаправляю назад, если у меня есть ошибка проверки в форме.

Когда у меня есть ошибка формы, и я перенаправляюсь обратно на страницу с заполненными старыми значениями и читаю выбранные значения групп радиостанций, все значения остаются 0. Почему val() 0, даже когда радио имеет выбранное значение 1?

var r4 = $('input[name="configtype"]'); 
var s4 = $('#comprehensive'); 

initsec(r4, s4); 

function initsec(radio, togglesection){ 

    console.log(radio.val()); 

    //When being redirected back to the page with the radio selected at the value '1', 
    //console.log still shows 0 

    if (radio.val() == 1) 
     { 
      togglesection.toggle(); 
     } 
    } 

редактировать

var r4 = $('input[name="configtype"]:checked'); не может работать в этой ситуации, потому что я использую поле радио и в других местах в моем коде, где я должен не только получить проверенное значение, но вместо того, чтобы проверенное значение, таким образом, не дублируем, насколько я знаю (потому что я читал var r4 = $('input[name="configtype"]:checked'); миллион раз, но это невозможно в моем коде)

+0

Возможный дубликат [Как я могу узнать, какая кнопка радио выбирается с помощью JQuery?] (HTTP: // stackoverflow.com/questions/596351/how-can-i-know-which-radio-button-is-selected-via-jquery) – Koshinae

+0

@koshinae сделал редактирование, чтобы объяснить, почему я не могу использовать данную ссылку (потому что я Я читал это точно, но не смог найти ответ ;-)) – Markinson

ответ

1

- это набор всех радиоэлементов, а не только отмеченный таким образом вызов .val() вернет e значение первого элемента в наборе.

Вы можете использовать .filter() для выбора только проверяемого параметра

console.log(radio.filter(':checked').val()); 

или

var r4 = $('input[name="configtype"]:checked'); 
+0

Это сработало! Я пытался избежать использования второго варианта, потому что мне пришлось использовать переменную без ': checked' в ней, именно то, что я искал – Markinson