вставляют в номер телефона еще и разные символы — например: 01234-56789, 01234/56789 or 01234 56789 (с символом пробела внутри). Не следует принуждать пользователя отказываться от таких символов в телефонном номере. А потому мы должны дополнить наш скрипт процедурой проверки цифр и некоторых символов. Решение задачи продемонстрировано в следующем примере, взятом из моей книги о JavaScript:
Исходный код этого скрипта:
<html>
<head>
<script language='JavaScript'>
<!- hide
// ******************************************************
// Script from Stefan Koch — Voodoo's Intro to JavaScript
// http://rummelplatz.uni-mannheim.de/~skoch/js/
// JS-book: http://www.dpunkt.de/javascript
// You can use this code if you leave this message
// ******************************************************
function check(input) {
var ok = true;
for (var i = 0; i < input.length; i++) {
var chr = input.charAt(i);
var found = false;
for (var j = 1; j < check.length; j++) {
if (chr == check[j]) found = true;
}
if (!found) ok = false;
}
return ok;
}
function test(input) {
if (!check(input, «1», «2», «3», '4',
«5», «6», «7», «8», «9», «0», '/', «-», ' ')) {
alert('Input not ok.');
}
else {
alert('Input ok!');
}
}
// — >
</script>
</head>
<body>
<form>
Telephone:
<input type='text' name='telephone' value=''>
<input type='button' value='Check'
onClick='test(this.form.telephone.value)'>
</form>
</body>
</html>
Функция test() определяет, какие из введенных символов признаются корректными.
Предоставление информации, введенной в форму
Какие существуют возможности для передачи информации, внесенной в форму? Самый простой способ состоит в передаче данных формы по электронной почте (этот метод мы рассмотрим поподробнее).
Если Вы хотите, чтобы за вносимыми в форму данными следил сервер, то Вы должны использовать интерфейс CGI (Common Gateway Interface). Последнее позволяет Вам автоматически обрабатывать данные. Например, сервер мог бы создавать базу данных со сведениями, доступную для некоторых из клиентов. Другой пример — поисковые страницы, такие как Yahoo. Обычно в них представлена форма, позволяющая создавать запрос для поиска в собственной базе данных. В результате пользователь получает ответ вскоре после того, как нажимает на соответствующую кнопку. Ему не приходится ждать, пока люди, отвечающие за поддержание данного сервера, прочтут указанные им данные и отыщут требуемую информацию. Все это автоматически выполняет сам сервер. JavaScript не позволяет делать таких вещей.
С помощью JavaScript Вы не сможете создать книгу читательских отзывов, поскольку JavaScript лишен возможности записывать данные в какой-либо файл на сервере. Делать это Вы можете только через интерфейс CGI. Конечно, Вы можете создать книгу отзывов, для которой пользователи присылали сведения по электронной почте. Однако в этом случае Вы должны заносить отзывы вручную. Так можно делать, если Вы не предполагаете получать ежедневно по 1000 отзывов.
Соответствующий скрипт будет простым текстом HTML. И никакого программирования на JavaScript здесь вовсе не нужно! Конечно за исключением того случая, если Вам понадобится перед пересылкой проверить данные, занесенные в форму — и здесь уже Вам действительно понадобится JavaScript. Я должен лишь добавить, что команда mailto работает не повсюду — например, поддержка для ее отсутствует в Microsoft Internet Explorer 3.0.
<form method=post action='mailto: [email protected]' enctype='text/plain'>
Нравится ли Вам эта страница?
<input name='choice' type='radio' value='1'>Вовсе нет.<br>
<input name='choice' type='radio' value='2' CHECKED>Напрасная трата времени.<br>
<input name='choice' type='radio' value='3'>Самый плохой сайт в Сети.<br>
<input name='submit' type='submit' value='Send'>
</form>
Параметр
Если Вы хотите проверить форму прежде, чем она будет передана в сеть, то для этого можете воспользоваться программой обработки событий onSubmit. Вы должны поместить вызов этой программы в тэг <form>. Например:
function validate() {
// check if input ok
//…
if (inputOK) return true
else return false;
}
…
<form… onSubmit='return validate()'>
…
Форма, составленная таким образом, не будет послана в Интернет, если в нее внесены некорректные данные.