2014-05-01 6 views
0

Я работаю над HTML-документом, который является формой подачи экзамена. Однако я выполнил почти все заданные задачи, у меня возникли проблемы с проверкой переключателей. Однако я искал stackoverflow, ответы не отвечают критериям вопроса. Мой завершенный код показан ниже.Подтверждение и отклонение кнопки радио-кнопки (предупреждение)

У меня возникли проблемы с смелой части этой задачи:

Добавить набор радиокнопок в форме, чтобы принять уровень записи, такие как GCSE, AS или А2. Напишите функцию, которая отображает уровень входа для пользователя в поле предупреждения, чтобы подтвердить или отклонить уровень.

Ниже приведен код, за исключением проверки переключателей. Seperatley, у меня есть код, который не работает при реализации функции validateForm().

<html> 
<head> 
<title>Exam entry</title> 

<script language="javascript" type="text/javascript"> 

function validateForm() { 

var result = true; 
var msg = ""; 




if (document.ExamEntry.name.value == "") { 
msg += "You must enter your name \n"; 
document.ExamEntry.name.focus(); 
document.getElementById('name').style.color = "red"; 
result = false; 
} 

if (document.ExamEntry.subject.value == "") { 
msg += "You must enter the subject \n"; 
document.ExamEntry.subject.focus(); 
document.getElementById('subject').style.color = "red"; 
result = false; 
} 

if (document.ExamEntry.examno.value == "") { 
msg += "You must enter your Examination Number \n"; 
document.ExamEntry.examno.focus(); 
document.getElementById('examinationno').style.color = "red"; 
result = false; 
} 
if (document.ExamEntry.examno.value.length!== 4) { 
      msg+="Your Examination Number should be 4 digits.\n"; 
      document.ExamEntry.examno.focus(); 
      document.getElementById('examinationno').style.color="red"; 
      result = false; 
     } 


if(msg==""){ 
return result; 
} 
{ 
alert(msg) 
return result; 
} 
} 
</script> 
    </head> 

    <body> 
     <h1>Exam Entry Form</h1> 

<form name="ExamEntry" method="post" action="success.html"> 
    <table width="50%" border="0"> 
     <tr></tr> 
     <tr> 
      <td id="name">Name</td> 
      <td> 
       <input type="text" name="name" /> 
      </td> 
     </tr> 
     <tr> 
      <td id="subject">Subject</td> 
      <td> 
       <input type="text" name="subject" /> 
      </td> 
     </tr> 
     <tr> 
      <td id="examinationno">Examination Number</td> 
      <td> 
       <input type="text" name="examno" /> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input type="radio" name="examtype" value="GCSE" />GCSE</td> 
     </tr> 
     <tr> 
      <td> 
       <input type="radio" name="examtype" value="AS" />AS</td> 
     </tr> 
     <tr> 
      <td> 
       <input type="radio" name="examtype" value="A2" />A2</td> 
     </tr> 
     <tr> 
      <td> 
       <input type="submit" name="Submit" value="Submit" onClick="return validateForm();" /> 
      </td> 
      <td> 
       <input type="reset" name="Reset" value="Reset" /> 
      </td> 
     </tr> 
    </table> 
</form> 

на основе текущего кода, почему не будет следующий проверки при добавлении в функции ?:

if(document.getElementById('GCSE').checked) 
{examtype = "GCSE"; 
} 
if(document.getElementById('AS').checked) 
{examtype = "AS"; 
} 
if(document.getElementById('A2').checked) 
{examtype = "A2"; 
} 

if(confirm("You have selected"+examtype+.Continue?")){ 

if(msg==""){ 
return result; 
} 
{ 

alert(msg) 
return result; 
} 
} 

else{ 
alert("Action cancelled"); 
return false; 
} 
+0

Является ли это домашнее задание вопрос Также есть ошибка в сообщении подтверждения, которое подсвечивается SO. – teynon

+0

Это не вопрос домашней работы, это исследовательская задача, в которой важно использование Интернета. Какова ошибка с подтверждением? Также я не знакомый с «SO»? Спасибо за ответ. – kylerp

+0

Я не уверен, где кто-то приобретает «исследовательскую задачу, где интернет-использование имеет важное значение» в Javascript, но эта задача во многом похожа на домашнюю проблему. С этим я вижу, что вы новый пользователь, поэтому у меня нет ничего, что указывает на то, что это вопрос или не является домашним заданием. Поэтому я просто укажу, где ошибка, и h ope вы можете понять это. Посмотрите на 'if (confirm ...) {' и посмотрите цвет текста. Затем просмотрите кавычки. – teynon

ответ

0
// Retrieving the checked radio button value 
function getRadioValue (frmName, rbGroupName) 
{ 
    var radios = document[frmName].elements[rbGroupName]; 
    for (var i=0; i <radios.length; i++) 
    { 
     if (radios[i].checked) 
     { 
      return radios[i].value;  
     } 
    } 

    return false; 
} 

Вызовите getRadioValue() внутри validateForm()

// examtype gets false or GCSE or AS or A2 
var examtype = getRadioValue ("ExamEntry", "examtype"); 
+1

Учитывая, что вызывающий абонент уже знает имена групп и групп кнопок, возможно, проще просто передать коллекцию: 'getRadioValue (radioButtonCollection)'. :-) – RobG

+0

Благодарим вас за это, кажется, существует некоторый конфликт при добавлении в текущую функцию validateForm(). Просто вызывая var examtype = getRadioValue ("ExamEntry", "examtype"); в функции validateForm() заставляет валидацию перейти на страницу успеха. – kylerp

0

"C ontinue "- это ключевое слово. Таким образом, вы должны обернуть его в апострофы ("). Я не мог получить структуру если-заявления, я сделал некоторые изменения. Я надеюсь, что это то, что вы ищете ..

if(confirm("You have selected"+examtype+". Continue?")){ 

    if(msg==""){ 
    alert(msg); 
    return result; 
    } 

    else{ 
    alert("Action cancelled"); 
    return false; 
    } 
} 
Смежные вопросы