Опубликован: 19.10.2006 | Уровень: для всех | Доступ: свободно
Лекция 3:

Формы и циклы

< Лекция 2 || Лекция 3: 123 || Лекция 4 >

Недостаток этого метода состоит в том, что простая строка " @." пройдет проверку. Должно быть очевидно, что она не является допустимым адресом e-mail. Существует другой метод для проверки адреса e-mail и для проверки множества других вещей. Это делается с помощью так называемых "регулярных выражений". Хотя регулярные выражения здесь рассматриваться не будут, ниже приведен пример проверки адреса e-mail, который остается читателю для анализа в качестве упражнения.

function validateForm(){
  var email = document.forms.tutform.elements.email.value;
  if(!(/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.
     [a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/.test(email))){
    alert('Пожалуйста, введите допустимый адрес e-mail');
    return false;
  }
  return true;
}

Как можно видеть, использование регулярного выражения приводит к более короткому (и более надежному) коду проверки, но он является и существенно более сложным!

С помощью примеров этой лекции теперь можно создать одну функцию для проверки всей формы:

function tut7(){
  var form_object = document.forms.tutform;
  var radios      = document.forms.tutform.elements.color;
  var email       = document.forms.tutform.elements.email.value;

  if(form_object.elements.firstname.value == "){
    alert('Вы должны ввести свое имя!');
    return false();
  } else if(form_object.elements.lastname.value == "){
    alert('Вы должны ввести свою фамилию!');
    return false();
  } else if(email.indexOf('@')<0){
    alert('В адресе e-mail должен быть символ @');
    return false();
  } else if(email.indexOf('@') != email.lastIndexOf('@')){
    alert('В адресе e-mail не может быть более одного символа @');
    return false();
  } else if(email.indexOf('.')<0){
    alert('В адресе e-mail должна быть как минимум одна точка');
    return false();
  } else if(email.lastIndexOf('.')<email.indexOf('@')){
    alert('В адресе e-mail должна быть как минимум одна точка после символа @');
    return false();
  }

  for(var i=0; i<radios.length; i++){
    if(radios[i].checked) return true();
  }
  alert('Необходимо выбрать цвет!');

  return false;
}
< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Елена Сапегова
Елена Сапегова

После прохождения теоретической части пришло письмо об окончании теоретической части курса, будет ли практическая часть?

Рустам Рахимов
Рустам Рахимов

Пол часа искал в интеренете, как что работает. Такое чувство что автор пишет для людей которые уже знают js, или просто хвастается своими знаниями. Конструкция формы непонятна. И можно было бы в кратце написать, что такое событие которое используют. Сорершенно не понятно как работает форма, и как брать из нее значение. 

function Complete() {

    var x = "Имя: " + document.tutform.firstname.value;

alert(x);

} - Так брать значение из формы tutform, firstname-получаем значение из имени. 

<INPUT TYPE="button" VALUE="Готово" onClick="Complete();"> - Нужно к кнопке прописать событие, при нажатие на кнопку готово, чтобы возвращалось значение с помощью функции. А так ничего не работает, и смысла учить нету, если не знать почему не работает.