2013-04-10 6 views
0

Функция ниже всегда возвращает false, и я думаю, что знаю почему, но не знаю, как ее исправить. Форма подтверждения радио генерируется с использованием цикла, и я устанавливаю идентификатор каждого радиополя «myfilling», и я думаю, что именно там я ошибаюсь.Функция JS всегда возвращает False

Функция:

if(!document.getElementById('myfilling').checked) { 
    var resultloc=document.getElementById("fillingerror"); 
    resultloc.innerHTML = "<span style='color:red;'>Please select a filling!<span>"; 
    return false; 
} else { 
    var resultloc=document.getElementById("fillingerror"); 
    resultloc.innerHTML = ""; 
    return true; 
} 

Если я выбираю первый переключатель в поле, нет никакой ошибки. Однако, если я выберу любую из других кнопок, появится ошибка. Как это исправить?

Поле радио генерируется следующее:

function make_filling_radio($filling) 
{ 
    $filling = array("Carne de Casa (shredded beef)", "Carnitas (shredded pork)", "Pulled BBQ Chicken", "Roasted Chili Lime Chicken", "Roasted Veggies"); 

    foreach ($filling as $value){ 
     if (!empty($filling) and (FALSE !== array_search($value, $filling))) 
      echo "<input type=\"radio\" name=\"filling\" value=\"$value\" id='myfilling'> $value<br>\n"; 
     else 
      echo "<input type=\"radio\" name=\"filling\" value=\"$value\" id='myfilling'> $value<br>\n"; 
    } 
} 
+0

Покажите нам, как вы его генерируете, и соответствующую разметку. – Gabe

+2

_and Я установил идентификатор каждого радиополя «myfilling» _ - идентификаторы должны быть ** уникальными ** – Andreas

+0

Я понимаю, что они должны быть уникальными, но как я могу это решить? Код, используемый для генерации радиополя, включает –

ответ

0

Чтобы решить эту проблему с чисто JS, вы можете перебрать все input тегов с getElementsByName (вместо использования getElementById, так как ваши идентификаторы не являются уникальными) :

var input_elements = document.getElementsByName("filling"); 

for (var i=0; i < input_elements.length; i++) { 
    if (elements[i].checked) { 
    //checked radio found 
    return true; 
    } 
} 

//... 
return false; 
Смежные вопросы