У меня есть компьютерное назначение.
Я сделал большинство, я просто застрял в этой задаче:
"Add a set of radio buttons to the form to accept a level of entry such as
GCSE, AS or A2. Write a function that displays the level of entry to the user
in an alert box so that the level can be confirmed or rejected."
Я сделал радио кнопки, я просто не знаю, как сделать вторую часть с помощью Alertbox и функции.
Пока мой код выглядит так:
<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 (msg=="") {
return result;
}
{
alert(msg)
return result;
}
}
</script>
</head>
<! Main HTML content begins >
<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" maxlength="4" /></td>
</tr>
<tr>
<td><input type="radio" name="Level" value="GCSE">GCSE</td>
</tr>
<tr>
<td><input type="radio" name="Level" value="AS">AS</td>
</tr>
<tr>
<td><input type="radio" name="Level" 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>
</body>
</html>
Все, что вам нужно сделать, это добавить значение переключателя в сообщение следующим образом:
msg += "Level of Entry: "+document.ExamEntry.Level.value;
Вот скрипичная демонстрация, которую вы можете попробовать
РЕДАКТИРОВАТЬ № 1: Хотя было сказано, что он использует окно предупреждения, которое фактически не позволяет пользователю подтвердить или отклонить, для этого вы могли бы вместо этого использовать подтверждение:
if (confirm("Click OK to confirm your Level of Entry or Cancel if you would like to correct it"))
return true;
else
return false;
В моем примере я добавил его только в том случае, если остальная часть проверки формы прошла успешно: http://jsfiddle.net/Qd8sk/2/
EDIT # 2: После нашего разговора я обновил созданный jsfiddle. Это намного проще, чем то, что вы предоставили.
Вот ваш: http://jsfiddle.net/Kjxmn/
Вот мой: http://jsfiddle.net/Kjxmn/2/
Несколько вещей, которые я изменил:
-1. Добавленный return
перед именем функции в onchange
- выглядит как в противном случае, он все равно будет отправлять даже при return false
.
-2. Исправлено имя формы, которое вы назвали radioform
этот раз, а не Exam Entry
.
-3. Избавьтесь от немного громоздкой проверки выбранного значения, используя if (document.radioform.level.value == '')
.
-4. Добавлена проверка подтверждения.
EDIT # 3: похоже, что firefox не любит использование document.ExamEntry.Level.value
для радиокнопок, поэтому вместо этого я создал быстрое обходное решение, которое будет проходить через элементы document.ExamEntry.Level
и найти тот, который "selected" ("проверено" на самом деле - даже если это переключатель, код js по-прежнему называется "checked").
Посмотрите обновленную скрипту: http://jsfiddle.net/Qd8sk/3/
function confirm () {
var alerttxt = "Are you sure you want to choose",
value = document.ExamEntry.name.value;
alerttxt += value;
alert(alerttxt);
}
Переменная value содержит значение, которое пользователь выбрал в переключателе, вы просто хотите добавить это к сообщению, которое вы составляете, и отобразить весь этот текст в предупреждении