Показать сообщение отдельно
  #1 (permalink)  
Старый 17.01.2017, 01:00
Новичок на форуме
Отправить личное сообщение для asdffak Посмотреть профиль Найти все сообщения от asdffak
 
Регистрация: 17.01.2017
Сообщений: 7

Загадка onsubmit
Здравствуйте!
В попытках сделать обработку формы перед отправкой на сервер столкнулся с проблемой, которую ну никак не могу понять.
Вернее будет сказать, что проблем несколько.
Итак, есть вот такая форма:
<form name='Registration' method="post" onsubmit="return check(this)">
//Здесь идут элементы формы (на всякий случай упомяну, что они собраны в несколько таблиц)
</form>


Как видно onsubmit ссылается на функцию check.
Первая проблема заключается в том, что, если функция прописана во внешнем файле, то где бы и как бы на странице я не ссылался на этот файл ничего не работает.

Вторая проблема интереснее. Если я внутри страницы с формой под тегом <script> пишу вот такую функцию:
function check(form) {
  var name = form.login.value;
  alert(name);
}

То все замечательно работает (login - одно из имен для input в форме). Я нажимаю кнопку подтверждения, получаю alert с введенным текстом и страница автоматически перезагружается.

НО, если я точно так же прописываю вот такую функцию:
function check(form) {
    alert('Начали!');
     var login = form.login.value;
     var pass = form.password.value;
     var semipass = form.semiPassword.value;
     var mail = form.mail.value;
     ......
     var err = "";

     if (login.length < 4) err += "Слишком короткий логин \n";
     if (pass.length < 4) err += "Слишком короткий пароль \n";
     if (pass != semipass) err += "Пароли не совпадают \n";
     if ((mail.indexOf("@") < 0) || (mail.length < 2)) err += "Введен некорректный e-mail \n";
     ......

     if (err != "") return false;
     else return true;
   }

То при прочих равных функция не срабатывает. Я даже не получаю самого первого alert'а "Начали!", который специально для того и вводил, чтобы проверить срабатывание функции.

Что скажете? В чем проблема и что я не так делаю?
Ответить с цитированием