2013-11-08 4 views
3

У меня есть страница формы, в которой пользователь может ввести идентификатор, а соответствующие данные профиля извлекаются из mysql и отображаются в форме, чтобы пользователь мог ее редактировать.Как определить, проверено ли радио программно?

Один элемент - это группа радиостанций, поэтому вы можете выбрать уровень года (т.е. «1», «2», «3» и т. Д.).

Когда пользователь предоставляет идентификатор, выполняется вызов AJAX, чтобы предварительно заполнить форму данными, включая выбор соответствующего радио.

проблема:

пользователь должен выбрать уровень года представить форму. Я проверить это с помощью метода verifyForm():

function verifyForm() { 
    if(!document.addStudentForm.elements["yearLevel"].checked) { 
     alert("You must select a year level before submitting."); 
     return false; 
    } 
}; 

Я ожидаю, что это проверить yearLevel и, если параметр не выбран, сигнал тревоги/вернуться ложным.

Однако, когда радиостанция yearLevel предварительно выбрана данными AJAX, это по-прежнему ведет себя так, как если бы пользователь не выбрал радио.

Радио населен JS с помощью следующего кода:

document.getElementById("yearLevel_<?=$student['student']->get('yearLevel')?>").checked = true;

редактировать: Вот соответствующий HTML.

<form name="addStudentForm" action="validation/updateStudentValidate.php" method="POST" onSubmit="return verifyForm()">         
    <input type="radio" value="1" name="yearLevel" disabled id="yearLevel_1" /> 1 
    <input type="radio" value="2" name="yearLevel" disabled id="yearLevel_2" /> 2 
    <input type="radio" value="3" name="yearLevel" disabled id="yearLevel_3" /> 3 
    <input type="radio" value="4" name="yearLevel" disabled id="yearLevel_4" /> 4 
    <input type="radio" value="5" name="yearLevel" disabled id="yearLevel_5" /> 5 
    <input type="radio" value="6" name="yearLevel" disabled id="yearLevel_6" /> 6 
</form> 

Вопрос:

Как я могу иметь мой Javascript правильно определить, было ли проверено радио, независимо от того, если он был выбран вручную или программно?

+1

Как функция AJAX выбирает переключатель? – Robb

+0

@Robb: добавлен в исходное сообщение. – Prefix

+0

, и вы подтвердили, что он действительно проверяет коробку? – PlantTheIdea

ответ

0

Взятые из this StackOverflow post и адаптирован для этого примера и для скорости, вы можете иметь это в AJAX возвращения успеха:

var radios = document.getElementsByName('yearLevel'), 
    i = radios.length, 
    isChecked = false; 

while(i--){ 
    if (radios[i].checked) { 
     isChecked = true; 
     break; 
    } 
} 

Тогда, когда функция вызывается:

function verifyForm(){ 
    if(!isChecked){ 
     alert("You must select a year level before submitting."); 
     return false; 
    } 
}; 

Это предполагает что у вас нет других предметов с именем yearLevel в вашем HTML.

Это действительно вернет значение. Наверное, я не уверен, что вы хотите увидеть определенный элемент, или только что они были проверены вообще. Эта функция будет делать и то, и другое.

+0

Если это не работает, пометьте мне префикс, я вспомнил способ – Esqarrouth

+0

чувак успокоился, у меня нет уровня доступа для голосования :( там вы идете, я проголосовал. – Esqarrouth

+1

ах мои извинения, вот что я получаю для того, чтобы прыгнуть к выводам. – PlantTheIdea

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